Tóm tắt
Nhà phát triển có thể sử dụng tự động hóa trong Microsoft Office để xây dựng các giải pháp tùy chỉnh sử dụng các khả năng và các tính năng được tích hợp vào sản phẩm Office. Mặc dù phát triển chương trình như vậy có thể được thực hiện trên hệ thống máy khách với khả năng dễ dàng tương đối, một số biến chứng có thể xảy ra nếu tự động hóa diễn ra từ mã phía máy chủ chẳng hạn như các trang Microsoft Active Server (ASP), ASP.NET, NCOM hoặc dịch vụ Windows NT. Bài viết này thảo luận về các biến chứng mà người phát triển có thể gặp phải. Bài viết này cũng cung cấp các lựa chọn thay thế cho tự động hóa có thể tăng tốc độ hiệu suất. Tuy nhiên, các nhà phát triển nên lưu ý rằng bài viết này sẽ chỉ cung cấp cho các mục đích thông tin. Microsoft không khuyên dùng hoặc hỗ trợ tự động hóa phía máy chủ của Office.
Lưu ý
Trong ngữ cảnh này, cơ sở dữ liệu Access sẽ phân phối lại và thời gian chạy Access được xem là các cấu phần của Microsoft Office. Thuật ngữ "phía máy chủ" cũng áp dụng cho mã đang chạy trên máy trạm Windows, nếu mã đang chạy từ máy trạm Windows khác với trạm tương tác của người dùng đã đăng nhập. Ví dụ: mã được bắt đầu bằng bộ lập lịch nhiệm vụ bên dưới tài khoản hệ thống chạy trong cùng một môi trường như là "phía máy chủ" mã ASP hoặc dưới dạng mã _ com. Do đó, nhiều vấn đề mà bài viết này mô tả có thể xảy ra. Để biết thêm thông tin về máy trạm Windows và giới thiệu về COM, hãy xem mục "thông tin thêm" và phần "tham chiếu".
Thông tin Bổ sung
Tất cả các phiên bản hiện tại của Microsoft Office đều được thiết kế, được kiểm nghiệm và cấu hình để chạy dưới dạng sản phẩm người dùng cuối trên một máy trạm khách. Chúng giả định một máy tính bàn và hồ sơ người dùng tương tác. Họ không cung cấp mức độ của việc sắp xếp lại hoặc bảo mật cần thiết để đáp ứng nhu cầu của các cấu phần máy chủ được thiết kế để chạy không giám sát. Microsoft hiện không đề xuất và không hỗ trợ, tự động hóa các ứng dụng Microsoft Office từ bất kỳ ứng dụng hoặc cấu phần máy khách không được không giám sát không đều không được thiết đặt (bao gồm cả ASP, ASP.NET, YCOM và NT Services), vì Office có thể triển lãm hành vi không ổn định và/hoặc bế tắc khi Office đang chạy trong môi trường này. Nếu bạn đang xây dựng một giải pháp chạy trong ngữ cảnh phía máy chủ, bạn nên thử sử dụng các thành phần đã được thực hiện an toàn cho việc thực hiện không giám sát. Hoặc, bạn nên cố gắng tìm các lựa chọn thay thế cho phép ít nhất là một phần của mã để chạy phía máy khách. Nếu bạn sử dụng một ứng dụng Office từ một giải pháp phía máy chủ, ứng dụng sẽ thiếu nhiều khả năng cần thiết để chạy thành công. Ngoài ra, bạn sẽ nhận được những rủi ro với độ ổn định của giải pháp tổng thể của mình.
Các vấn đề khi sử dụng tự động hóa phía máy chủ của Office
Các nhà phát triển tìm cách sử dụng Office trong giải pháp phía máy chủ cần phải nhận thức được năm khu vực chính mà Office sẽ hoạt động khác so với dự kiến do môi trường. Nếu mã của bạn là chạy thành công, bạn phải giải quyết các vấn đề này và thu nhỏ hiệu ứng càng nhiều càng tốt. Cân nhắc những vấn đề này một cách cẩn thận khi bạn xây dựng ứng dụng của bạn. Một giải pháp không thể giải quyết được tất cả các vấn đề. Các thiết kế khác nhau yêu cầu bạn ưu tiên các yếu tố khác nhau.
-
Danh tính người dùng: các ứng dụng Office giả định một danh tính người dùng khi các ứng dụng đang chạy, ngay cả khi tự động khởi động ứng dụng. Các ứng dụng tìm cách khởi tạo thanh công cụ, menu, tùy chọn, máy in và một số phần bổ trợ dựa trên thiết đặt trong hive đăng ký người dùng cho người dùng ra mắt ứng dụng. Nhiều dịch vụ chạy dưới tài khoản không có hồ sơ người dùng nào (chẳng hạn như tài khoản hệ thống hoặc IWAM_ [ServerName] accounts). Do đó, Office có thể không khởi tạo chính xác khi khởi động. Trong tình huống này, Office trả về lỗi trên hàm CreateObject hoặc hàm CoCreateInstance . Ngay cả khi ứng dụng Office có thể được bắt đầu, các hàm khác có thể không hoạt động đúng nếu không có hồ sơ người dùng nào tồn tại.
-
Tương tác với máy tính để bàn: Cácứng dụng Office giả định rằng chúng đang chạy trên màn hình nền. Trong một số trường hợp, các ứng dụng có thể cần hiển thị cho các hàm tự động hóa nhất định để hoạt động đúng cách. Nếu một lỗi không mong muốn xảy ra, hoặc nếu một tham số không xác định là cần thiết để hoàn thành một hàm, Office được thiết kế để nhắc người dùng có một hộp thoại phương thức hỏi người dùng mà người dùng muốn thực hiện. Hộp thoại phương thức trên máy tính không thể bác bỏ màn hình không tương tác. Do đó, chủ đề đó ngừng phản hồi (treo) vô thời hạn. Mặc dù thực hành mã hóa nhất định có thể giúp giảm khả năng phát hành này, những cách thực hành này không thể ngăn chặn sự cố này hoàn toàn. Thực tế này một mình khiến cho việc chạy các ứng dụng Office từ môi trường máy chủ có nguy cơ và không được hỗ trợ.
-
Reentrancy and khả năng mở rộng: các cấu phần phía máy chủ cần có các thành phần có tính tổng hợp cao, đa luồng com có tối thiểu thấp và thông lượng lớn cho nhiều khách hàng. Các ứng dụng Office nằm gần như tất cả các khía cạnh chính xác đối diện. Các ứng dụng Office không phải đóng cửa, các máy chủ tự động hóa dựa trên nền được thiết kế nhằm cung cấp các chức năng đa dạng nhưng tài nguyên cho một máy khách duy nhất. Các ứng dụng cung cấp ít khả năng mở rộng như một giải pháp phía máy chủ. Ngoài ra, các ứng dụng có giới hạn cố định đối với các yếu tố quan trọng, chẳng hạn như bộ nhớ. Không thể thay đổi những thông qua cấu hình. Quan trọng hơn, các ứng dụng sử dụng các tài nguyên toàn cầu như các tệp được ánh xạ bộ nhớ, phần bổ trợ toàn cầu hoặc mẫu và máy chủ tự động hóa được chia sẻ. Điều này có thể giới hạn số lượng trường hợp có thể chạy đồng thời và có thể dẫn đến các điều kiện chủng tộc nếu các ứng dụng được đặt cấu hình trong môi trường đa máy khách. Các nhà phát triển có kế hoạch chạy nhiều hơn một phiên bản của bất kỳ ứng dụng Office nào cùng lúc cần cân nhắc "gộp phần" hoặc tính năng truy nhập vào ứng dụng Office để tránh các khóa hoặc dữ liệu bị hỏng.
-
Resiliency và độ ổn định: Office 2000, Office XP, Office 2003 và Office 2007 sử dụng công nghệ Microsoft Windows INSTALLER (MSI) để giúp cài đặt và tự sửa chữa dễ dàng hơn cho người dùng cuối. MSI giới thiệu khái niệm "cài đặt trên mục đầu tiên sử dụng." Điều này cho phép tính năng được cài đặt hoặc cấu hình tự động trong thời gian chạy cho hệ thống, hoặc thường xuyên hơn cho một người dùng cụ thể. Trong môi trường máy chủ, thao tác này làm chậm hiệu suất và tăng khả năng hộp thoại có thể xuất hiện yêu cầu người dùng phê duyệt việc cài đặt hoặc cung cấp đĩa cài đặt. Mặc dù điều này được thiết kế để tăng Resiliency của Office dưới dạng sản phẩm người dùng cuối, việc thực hiện các khả năng của Office là MSI phản tác trong môi trường phía máy chủ. Ngoài ra, tính ổn định của Office nói chung không thể đảm bảo khi Office đang chạy bên máy chủ, vì nó chưa được thiết kế hoặc được kiểm tra cho kiểu sử dụng này. Sử dụng Office với tư cách là thành phần dịch vụ trên máy chủ mạng có thể làm giảm độ ổn định của máy tính đó và do đó có thể làm giảm độ ổn định cho toàn bộ mạng của bạn.
-
Bảo mật phía máy chủ: các ứng dụng Office không bao giờ được dùng để sử dụng bên máy chủ. Do đó, các ứng dụng Office không đưa vào xem xét các vấn đề về bảo mật phân bố khuôn mặt. Office không xác thực các yêu cầu đến. Office cũng không bảo vệ bạn khỏi các macro chạy không vô tình, hoặc từ khởi động một máy chủ khác có thể chạy macro, từ mã phía máy chủ của bạn. Không mở các tệp được tải lên máy chủ từ web site ẩn danh. Dựa trên các thiết đặt bảo mật được đặt lần cuối, máy chủ có thể chạy macro bên dưới một ngữ cảnh hệ thống hoặc người quản trị có đầy đủ đặc quyền và do đó có thể thỏa hiệp mạng của bạn. Ngoài ra, Office dùng nhiều thành phần phía máy khách (chẳng hạn như MAPI, WinInet và MSDAIPP) có thể lưu trữ thông tin xác thực máy khách để tăng tốc độ xử lý. Nếu Office đang được tự động phía máy chủ, một ví dụ có thể dịch vụ nhiều hơn một máy khách. Nếu thông tin xác thực đã được lưu trữ cho phiên đó, một máy khách có thể dùng chứng danh đã lưu đệm ẩn của một máy khách khác. Vì vậy, máy khách có thể tăng quyền truy nhập không được cấp bằng cách mạo danh những người dùng khác.
Ngoài các vấn đề kỹ thuật, bạn cũng phải cân nhắc các vấn đề về cấp phép. Hướng dẫn cấp phép hiện tại ngăn các ứng dụng Office không sử dụng trên máy chủ để yêu cầu khách hàng dịch vụ, trừ khi những khách hàng đó có bản sao Office được cấp phép. Sử dụng tự động hóa phía máy chủ để cung cấp chức năng Office thành máy trạm không được cấp phép không được bảo vệ bởi thỏa thuận cấp phép người dùng cuối (EULA). Ngoài các vấn đề này, một trong các lỗi thường gặp sau đây có thể xảy ra khi bạn tìm cách tự động hóa Office Server-Side:
-
Hàm CreateObject và hàm CoCreateInstance trả về một trong các thông báo lỗi thời gian chạy sau và không thể bắt đầu cho tự động hóa.
Tin nhắn 1
Lỗi thời gian chạy ' 429 ': cấu phần ActiveX không thể tạo đối tượng
Tin nhắn 2
Lỗi thời gian chạy ' 70 ': quyền bị từ chối
Tin nhắn 3
CO_E_SERVER_EXEC_FAILURE (0x80080005): thực hiện máy chủ không thành công
Tin nhắn 4
E_ACCESSDENIED (0x80070005): Access bị từ chối
-
Khi bạn mở một tài liệu Office, bạn nhận được một trong các thông báo lỗi sau đây.
Tin nhắn 1
Lỗi thời gian chạy ' 5981 ' (0X80013175d): không thể mở dung lượng lưu trữ macro
Tin nhắn 2
Lỗi thời gian chạy ' 1004 ': phương pháp ' ~ ' của đối tượng ' ~ ' không thành công
-
Hàm CreateObject và hàm CoCreateInstance ngừng phản hồi và không bao giờ hoàn thành hoặc mất nhiều thời gian để trả về. Trên một số máy chủ, quá trình tạo sẽ nhanh chóng, nhưng lỗi 1004 xuất hiện trong Nhật ký sự kiện Windows cho biết ứng dụng đã bị ngừng.
-
Các hàm nhất định không đột ngột hoặc ngừng phản hồi vô thời hạn vì một cảnh báo người dùng hoặc hộp thoại khác yêu cầu người dùng quan tâm.
-
Chạy nhiều yêu cầu hoặc thử nghiệm căng thẳng khiến mã không thành công, ngừng phản hồi hoặc gặp sự cố khi tạo hoặc chấm dứt ứng dụng Office. Khi điều này xảy ra, một trong hai quá trình còn lại chạy trong bộ nhớ và không thể chấm dứt hoặc tất cả các phiên bản của ứng dụng đang được tự động không thành công từ điểm đó.
Các vấn đề hoặc thư khác có thể xuất hiện ngoài những vấn đề được liệt kê ở đây, nhưng những sự cố này thường xảy ra do kết quả của năm vấn đề chính được liệt kê trước đó trong bài viết này.
Lựa chọn thay thế cho tự động cạnh máy chủ
Microsoft khuyên người phát triển tìm các lựa chọn thay thế để tự động hóa Office nếu họ cần phát triển các giải pháp phía máy chủ. Vì các hạn chế về thiết kế của Office, các thay đổi đối với cấu hình Office không đủ để giải quyết mọi vấn đề. Microsoft đề xuất một số lựa chọn thay thế mà không yêu cầu Office được cài đặt ở phía máy chủ và có thể thực hiện các tác vụ phổ biến nhất hiệu quả hơn và nhanh hơn tự động hóa. Trước khi bạn liên quan đến Office với tư cách là thành phần phía máy chủ trong dự án của bạn, hãy cân nhắc các lựa chọn thay thế. Hầu hết các tác vụ tự động hóa phía máy chủ liên quan đến việc tạo hoặc chỉnh sửa tài liệu. Office 2007 hỗ trợ các định dạng tệp XML mở mới cho phép các nhà phát triển tạo, sửa, đọc và chuyển đổi nội dung tệp ở phía máy chủ. Những định dạng tệp này sử dụng không gian tên System.io.package.io trong khuôn khổ Microsoft .net 3. x để sửa các tệp Office mà không cần sử dụng các ứng dụng máy khách Office. Đây là phương pháp được đề xuất và được hỗ trợ để xử lý các thay đổi đối với tệp Office từ một dịch vụ. Các định dạng tệp XML mở là một tiêu chuẩn công cộng.
Microsoft cung cấp SDK để thao tác các định dạng tệp XML mở từ khuôn khổ .NET 3. x. Để biết thêm thông tin về SDK và về cách sử dụng SDK để tạo hoặc sửa tệp XML đang mở, hãy truy nhập trang web mạng Microsoft Developer Network (MSDN) sau đây:
Cách: thao tác các tài liệu định dạng Office Open XML
Thao tác các tệp Word 2007 với mô hình mở đối tượng XML (phần 1/3)
Thao tác các tệp Word 2007 với mô hình mở đối tượng XML (phần 2 của 3)
Thao tác các tệp Word 2007 với mô hình mở đối tượng XML (phần 3/3)
Thao tác các tệp Excel 2007 và PowerPoint 2007 với mô hình mở đối tượng XML (phần 1/2)
Thao tác các tệp Excel 2007 và PowerPoint 2007 với mô hình mở đối tượng XML (phần 2 của 2)
Khi bạn mở các tệp XML từ ASP hoặc từ ASP.NET, bạn phải cung cấp kiểu phần mở rộng thư Internet đa năng (MIME) chính xác cho nội dung bạn có dòng. Để có một danh sách các loại MIME cho các tệp Office 2007, hãy truy cập trang web sau đây:
Các loại MIME về định dạng tệp Office 2007 cho streaming nội dung HTTP
Nếu bạn chỉ sử dụng tính năng khách hàng của Office 2007 và bạn không muốn yêu cầu dùng Open XML trong giải pháp, bạn có thể sử dụng các định dạng tệp văn phòng không phải nhị phân khác, chẳng hạn như HTML, XML và RTF. Sau đó, bạn có thể dòng các tệp này vào một máy khách bằng cách dùng kiểu MIME để văn bản kết quả xuất hiện trong Office. Tài liệu có thể được sửa, đã lưu, và thậm chí trở lại với máy chủ bằng cách sử dụng ASP trên máy chủ. Để biết thêm thông tin về bất kỳ chủ đề nào trong số này và ví dụ cho thấy cách thực hiện chúng, hãy bấm vào các số bài viết sau đây để xem các bài viết trong cơ sở tri thức Microsoft:
198703 Làm thế nào để tự động hóa Excel từ một VBScript phía máy khách
278973 ExcelADO thể hiện cách dùng ADO để đọc và ghi dữ liệu trong sổ làm việc Excel
286023 Cách dùng thành phần của BB ActiveX cho tự động hóa Word từ Internet Explorer
Nếu doanh nghiệp của bạn yêu cầu tạo máy chủ của Office 97, Office 2000, Office XP và Office 2003 nhị phân định dạng tệp, nhà cung cấp bên thứ ba cung cấp các cấu phần có thể giúp bạn. Microsoft không cung cấp bất kỳ thành phần nào như vậy, vì vậy bạn sẽ cần xây dựng giải pháp cho bản thân hoặc mua một từ nhà cung cấp bên thứ ba. Nhiều sản phẩm bên thứ ba khác nhau sẵn dùng. Bạn nên điều tra từng giải pháp để phù hợp nhất với nhà cung cấp cho nhu cầu doanh nghiệp của mình.
Nếu bạn muốn xây dựng giải pháp riêng của bạn để sửa các định dạng tệp Office 97, Office 2000, Office XP và Office 2003 nhị phân, bạn có thể nhận được thông số kỹ thuật định dạng tệp miễn phí theo các điều khoản của lời hứa đặc tả Microsoft mở (OSP). Không có hỗ trợ kỹ thuật nào sẵn dùng cho tài liệu hoặc đối với các sản phẩm mà bạn tạo nhưng tài liệu có sẵn.
Các giải pháp phía máy chủ cũng có thể muốn cho phép người dùng tải lên tệp, sau đó có máy chủ sẽ kết xuất các tệp để xem trên web hoặc trên các phương tiện khác. Microsoft hiện đang làm việc cung cấp các tính năng như vậy và cung cấp phiên bản đầu tiên của khả năng này trong Microsoft Excel Services. Excel Services là một công nghệ máy chủ mới được bao gồm trong Microsoft Office SharePoint Server 2007 và cho phép bạn tải, tính toán và hiển thị sổ làm việc Excel trên Office SharePoint Server 2007. Để biết thêm thông tin về Excel Services, hãy truy cập trang web mạng Microsoft Developer Network (MSDN) sau đây:
Hướng dẫn: phát triển ứng dụng tùy chỉnh bằng cách sử dụng dịch vụ web Excel
Tạo các ứng dụng kinh doanh bằng cách dùng Excel Services và các định dạng Office Open XML Dịch vụ tự động hóa Word là một ứng dụng dịch vụ mới trong SharePoint Server 2010. Dịch vụ tự động hóa Word cung cấp không giám sát, chuyển đổi phía máy chủ tài liệu vào định dạng được hỗ trợ bởi ứng dụng Microsoft Word client.
Tổng quan về dịch vụ tự động hóa Word
Giới thiệu dịch vụ tự động hóa Word Bạn cần đánh giá các tùy chọn mà bài viết này mô tả phù hợp với nhu cầu của bạn và cách tốt nhất để triển khai giải pháp của bạn. Thông tin mà bài viết này cung cấp không được đảm bảo để giải quyết tất cả các sự cố cho tất cả khách hàng. Bạn được khuyến khích kiểm tra kỹ lưỡng trước khi triển khai giải pháp.