0

VSTO vẫn còn đáng dùng vào năm 2026? Kinh nghiệm xây dựng Word-GPT với OpenAI API

VSTO vẫn còn đáng dùng vào năm 2026?

Nếu bạn bắt đầu một dự án mở rộng Microsoft Office ngày hôm nay, rất có thể cái tên bạn gặp đầu tiên sẽ là Office Add-insOffice.js, chứ không phải VSTO.

Điều đó hoàn toàn hợp lý. Microsoft đang tập trung vào mô hình add-in dựa trên công nghệ web, có thể hoạt động trên Windows, macOS, Office trên web và các nền tảng khác.

Tuy nhiên, trong quá trình phát triển các tiện ích cho Microsoft Word và Excel, tôi nhận ra rằng VSTO vẫn là một công nghệ rất mạnh, đặc biệt khi ứng dụng chỉ cần chạy trên Windows và cần tương tác sâu với phiên bản desktop của Microsoft Office.

Một ví dụ thực tế của tôi là Word-GPT VSTO, một tiện ích Microsoft Word kết nối trực tiếp tài liệu với OpenAI API.

Trong bài viết này, tôi muốn chia sẻ lý do tại sao tôi vẫn sử dụng VSTO, những điểm mạnh của nó và cũng cả những lý do khiến tôi không chắc mình sẽ chọn VSTO cho mọi dự án mới trong tương lai.


VSTO thực sự là gì?

VSTO, viết tắt của Visual Studio Tools for Office, cho phép chúng ta viết tiện ích cho Microsoft Office bằng C# hoặc Visual Basic trên .NET Framework.

Điểm mà tôi thích nhất ở VSTO là khả năng truy cập rất sâu vào mô hình đối tượng của Office.

Ví dụ với Microsoft Word, từ C# tôi có thể làm việc với:

  • Document
  • Paragraph
  • Range
  • Selection
  • Tables
  • Content Controls
  • Ribbon
  • Events của Word

Phía sau VSTO là các Primary Interop Assemblies (PIA), cho phép mã .NET tương tác với mô hình COM của Microsoft Office.

Điều này có nghĩa là ứng dụng C# của tôi không chỉ hiển thị một giao diện bên cạnh Word. Nó có thể thực sự làm việc với tài liệu đang mở.

Đây là một khác biệt quan trọng.


Vì sao VSTO vẫn rất mạnh?

Khi làm một ứng dụng desktop chỉ dành cho Windows, VSTO cho phép tôi kết hợp hai thế giới.

Một bên là Microsoft Word với mô hình đối tượng rất mạnh đã tồn tại nhiều năm.

Bên còn lại là toàn bộ hệ sinh thái .NET Framework.

Tôi có thể sử dụng:

  • HTTP client để giao tiếp với API
  • JSON
  • XML
  • hệ thống file của Windows
  • registry
  • cơ sở dữ liệu
  • thư viện .NET
  • giao diện Windows
  • các dịch vụ bên ngoài

Và đồng thời tôi vẫn có thể điều khiển Word gần như trực tiếp.

Đối với một số loại ứng dụng nội bộ hoặc phần mềm doanh nghiệp, đây vẫn là một lợi thế rất lớn.


Word + OpenAI API là một ví dụ tốt

Tôi đã gặp một bài toán khá đơn giản:

Người dùng đang viết hoặc chỉnh sửa tài liệu trong Microsoft Word và muốn sử dụng AI để xử lý nội dung.

Cách thông thường là:

  1. chọn văn bản trong Word;
  2. sao chép;
  3. mở một ứng dụng AI;
  4. nhập yêu cầu;
  5. nhận kết quả;
  6. sao chép kết quả;
  7. quay lại Word;
  8. thay thế văn bản.

Về mặt kỹ thuật, đây không phải vấn đề lớn.

Nhưng nếu người dùng thực hiện việc này hàng chục hoặc hàng trăm lần mỗi ngày thì quy trình trở nên khá khó chịu.

Vì vậy tôi phát triển Word-GPT VSTO.

Tiện ích hoạt động ngay bên trong Microsoft Word. Người dùng có thể chọn một phần văn bản hoặc tài liệu, gửi nội dung đến OpenAI API và nhận lại kết quả mà không phải chuyển qua lại giữa nhiều ứng dụng.

Một điều tôi đặc biệt muốn giữ là cách làm việc tự nhiên của Word.

Ví dụ, khi tiện ích thay thế nội dung, thay đổi đó vẫn cần hoạt động hợp lý với hệ thống Undo của Word. Người dùng phải có khả năng nhấn Ctrl + Z nếu không thích kết quả.

Đây là loại tích hợp mà VSTO thực hiện rất tốt.

Tìm hiểu thêm về Word-GPT VSTO


Nhưng VSTO có một vấn đề lớn: .NET Framework

Đây là phần mà chúng ta không thể bỏ qua.

VSTO phụ thuộc vào .NET Framework.

Microsoft vẫn hỗ trợ VSTO, nhưng Microsoft cũng nói rõ rằng nền tảng VSTO sẽ tiếp tục sử dụng .NET Framework và sẽ không được chuyển sang các phiên bản .NET hiện đại.

Điều này rất quan trọng đối với một dự án mới.

Trong khi phần lớn hệ sinh thái .NET đã chuyển sang .NET hiện đại, VSTO vẫn nằm ở thế giới .NET Framework.

Tôi có thể tiếp tục duy trì và phát triển ứng dụng VSTO, nhưng không thể đơn giản nâng một dự án VSTO lên .NET 8, .NET 9 hoặc một phiên bản .NET mới hơn và mong mọi thứ tiếp tục hoạt động như trước.

Đây là một dấu hiệu khá rõ về hướng phát triển lâu dài của nền tảng.


Microsoft đang hướng tới Office.js

Giải pháp hiện đại của Microsoft là Office Add-ins sử dụng Office JavaScript API, thường được gọi là Office.js.

Kiến trúc này rất khác VSTO.

Office Add-in về cơ bản là một ứng dụng web chạy trong môi trường browser hoặc WebView bên trong Office.

Giao diện có thể được xây dựng bằng:

  • HTML
  • CSS
  • JavaScript
  • TypeScript
  • các framework web hiện đại

Ưu điểm lớn nhất là cross-platform.

Một add-in được thiết kế đúng có thể hoạt động trên nhiều môi trường như:

  • Office trên Windows
  • Office trên macOS
  • Office trên web
  • một số ứng dụng Office trên iPad

Đây là điều VSTO không thể cung cấp vì VSTO chỉ hoạt động với Office desktop trên Windows.


Office.js không đơn giản là “VSTO phiên bản mới”

Theo tôi đây là điều quan trọng nhất cần hiểu.

Khi chuyển từ VSTO sang Office.js, chúng ta không chỉ đổi C# thành JavaScript.

Mô hình lập trình cũng thay đổi.

VSTO chạy rất gần với Office desktop và làm việc với COM object model.

Office.js chạy trong một môi trường web được cô lập hơn và tương tác với Office thông qua JavaScript API.

Office.js cũng sử dụng các requirement sets. Một API cụ thể có thể được hỗ trợ trên một phiên bản Word hoặc một nền tảng nhưng chưa chắc có trên tất cả các phiên bản khác.

Vì vậy khi phát triển một Office Add-in đa nền tảng, chúng ta phải kiểm tra những API nào thực sự có sẵn trên từng môi trường.

Đổi lại, chúng ta nhận được khả năng triển khai và hỗ trợ đa nền tảng tốt hơn rất nhiều.


Tôi sẽ chọn gì cho một dự án mới?

Câu trả lời của tôi là: tùy bài toán.

Nếu tôi cần xây dựng một sản phẩm mới cho nhiều khách hàng và muốn hỗ trợ Windows, macOS và Office trên web, tôi sẽ xem xét Office.js trước.

Nếu bài toán là:

  • chỉ chạy trên Windows;
  • khách hàng sử dụng Word hoặc Excel desktop;
  • cần tương tác sâu với Office;
  • cần tích hợp với hệ thống Windows hoặc thư viện .NET hiện có;
  • cần tự động hóa những tác vụ phức tạp trong tài liệu;

thì tôi vẫn sẽ cân nhắc VSTO.

Công nghệ cũ không nhất thiết đồng nghĩa với công nghệ vô dụng.

Đôi khi một công nghệ trưởng thành giải quyết một vấn đề cụ thể tốt hơn một nền tảng mới.


VSTO chưa chết, nhưng tương lai thuộc về Office.js

Tôi không nghĩ sẽ chính xác khi nói rằng VSTO đã chết.

Microsoft vẫn hỗ trợ VSTO và nhiều doanh nghiệp vẫn có những add-in VSTO đang hoạt động mỗi ngày.

Nhưng hướng đi dài hạn cũng khá rõ.

VSTO vẫn gắn với Windows và .NET Framework, trong khi Microsoft đang phát triển mô hình Office Add-ins dựa trên công nghệ web và JavaScript cho các ứng dụng Office đa nền tảng.

Vì vậy, đối với tôi, câu hỏi không phải là:

“VSTO tốt hay Office.js tốt?”

Mà là:

“Công nghệ nào phù hợp hơn với vấn đề mà tôi đang cần giải quyết?”

Trong trường hợp của Word-GPT, VSTO cho phép tôi kết hợp C#, Microsoft Word desktop và OpenAI API theo một cách trực tiếp và hiệu quả.

Và cho đến khi một dự án yêu cầu những lợi ích mà Office.js cung cấp, VSTO vẫn là một công cụ mà tôi sẵn sàng sử dụng.


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.