Office 伺服器端自動化的考量因素
本文曾發行於 CHT257757 在此頁中結論 開發人員可以對 Microsoft Office 使用「自動化」,利用 Office
產品的內建功能與特性建立自訂解決方案。此類程式開發在用戶端系統上實行起來並不難,但是如果要從伺服器端程式碼 (例如 Active Server Page
(ASP)、DCOM 或 NT 服務) 來執行自動化,情況就會複雜得多。 本文將討論開發人員可能面對的複雜情形,提供加速效能的自動化替代方案,以及如果無法避免伺服器端自動化時,設定 Office 的建議方法。然而,開發人員應該要瞭解,以下的建議僅供參考。Microsoft 並不建議或支援 Office 的伺服器端自動化。 注意 在本文中,「伺服器端」一詞亦指在 Microsoft Windows NT 或 Microsoft Windows 2000 工作站上執行的程式碼 (假如它是從登入使用者的互動式工作站以外的 WinStation 來執行)。例如,在 SYSTEM 帳戶下由工作排程器所啟動的程式碼是在和「伺服器端」ASP 或 DCOM 程式碼相同的環境中執行,因此會遭遇許多相同的問題。如需 WinStations 和 COM 的詳細資訊,請參閱<其他相關資訊>和<參考>等節。 其他相關資訊 所有目前的 Microsoft Office
版本均被設計、測試及設定做為用戶端工作站上的使用者產品。它們是採用互動式桌面及使用者設定檔,且不提供設計為自動執行的伺服器端元件所需要的重新進入或安全性等級。 目前 Microsoft 並不建議 (亦不支援) 從任何自動、非互動式用戶端應用程式或元件 (包括 ASP、DCOM 及 NT 服務等) 進行 Microsoft Office 應用程式自動化,因為在這種環境下執行,Office 可能會出現不穩定及/或鎖死的情形。 如果您要建構在伺服器端環境中執行的解決方案,應儘量使用可以安全地進行自動執行的元件,或者找到至少有部分程式碼可以執行用戶端的其他替代方案。如果您選擇從伺服器端解決方案使用 Office 應用程式,會發現它缺少許多順利執行所需的能力,且可能要冒解決方案整體穩定性不足的危險。 使用 Office 伺服器端自動化的問題開發人員如果想在伺服器端解決方案中使用 Office,必須考量到以下五點,因為 Office 會由於環境之故,表現不如預期。如果希望程式碼能順利執行,請務必注意這五點,儘量將其影響降到最低。在建立應用程式時請仔細考量這些項目,因為沒有任何解決方案能處理所有問題,且不同的設計也需要改變這些因素的優先順序。
除了這些較大的問題之外,許多客戶發現,若未修改其 Office 預設安裝,則在嘗試自動化伺服器端時,會收到下列其中一種常見錯誤:
執行伺服器端時使用自動化的替代方案Microsoft 強烈建議開發人員,如果需要開發伺服器端解決方案,請儘量不使用 Office 自動化,改採其他替代方案。由於 Office 設計上的限制,對 Office 組態所做的變更並不能解決所有問題。Microsoft 提供許多替代方案,不需要將 Office 安裝到伺服器端,且執行大部分的常見工作時,要比自動化來得更快、更有效率。在專案中納入 Office 做為伺服器端元件之前,請先考慮使用這些替代方案。大部分的伺服器端自動化工作都包含文件建立。由於 Office 2000 及更新版本均支援 HTML 做為原始文件格式,因此大部分文件均可使用 HTML 格式建立,必要時使用可延伸標記語言 (XML) 標記,並使用多用途網際網路郵件延伸標準 (Multipurpose Internet Mail Extension,MIME) 類型串流至用戶端,讓產生的文字顯示在 Office 中。只要使用伺服器上的 ASP,這些文件便可在有需要時進行編輯、儲存、甚至傳回伺服器。如果是舊版的 Office,使用其他易於操控的文字格式 (如 RTF) 亦可達到相同的效果。 有些原始二進位格式可以使用 Office Web 元件 (OWC) 或 ActiveX Data Objects (ADO) 來編輯,其速度和延展性較佳。文件內容可以在沒有自動化的情況下檢視或變更,檔案管理和版本處理也能使用 FrontPage Server Extensions (FPSE) 或「分散式撰寫及版本處理」(Distributed Authoring and Versioning,DAV) 來進行。如果一定要用到自動化,大部分的工作均可卸載至用戶端,以強化系統的穩定度和延展性,因為每個使用者均在自己的環境中以自己的設定執行工作。 如需這些主題及執行範例的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件: 270906 (http://support.microsoft.com/kb/270906/)
HOWTO:使用 ASP 產生 RTF 格式的文件,以便在 Microsoft Word 中使用
198703 (http://support.microsoft.com/kb/198703/) Howto automate Excel from a client-side VBScript
199841 (http://support.microsoft.com/kb/199841/) 如何使用 MIME 類型在 IE 中以 Excel 顯示 ASP 結果
224351 (http://support.microsoft.com/kb/224351/) Dsofile.dll lets you edit Office document properties without Office in Visual Basic .NET 2003 and in Visual Basic .NET 2002
244049 (http://support.microsoft.com/kb/244049/) 如何使用伺服器端圖表動態地產生圖表
258187 (http://support.microsoft.com/kb/258187/) OWebComp.exe Contains Scripting Samples for the Office 2000 Web Components
260239 (http://support.microsoft.com/kb/260239/) How To Format Cell Data When You Are Creating an Excel File With an Active Server Pages Page
278973 (http://support.microsoft.com/kb/278973/) ExcelADO 示範使用 ADO 在 Excel 活頁簿讀取和寫入資料的方法
286023 (http://support.microsoft.com/kb/286023/) 如何從 Internet Explorer 使用 VB ActiveX 元件將 Word 自動化
288130 (http://support.microsoft.com/kb/288130/) 如何使用 ASP 建立用於用戶端顯示的試算表 XML
317316 (http://support.microsoft.com/kb/317316/) Limitations of Office Web Components when used server-side
如果貴公司需要在伺服器端建立二進位 Office
檔案,有一些協力廠商可提供對您有幫助的元件。下面是提供此類服務的一些知名廠商的清單。這份清單僅做為參考資料之用。這份清單並不包含所有的廠商。其他廠商或許可提供更適合您的類似服務。您應該調查所有可能的協力廠商解決方案,然後找出最能符合貴公司需要的廠商。下列廠商目前提供了一些解決方案,可用程式方式建立及編輯原始的
Office 檔案格式。如需有關協力廠商的詳細資訊,請造訪下列網站:Aia Software B.V. http://www.aia-itp.com (http://www.aia-itp.com) Polar http://www.polarsoftware.com (http://www.polarsoftware.com) SoftArtisans http://www.softartisans.com (http://www.softartisans.com) SyncFusion http://www.syncfusion.com (http://www.syncfusion.com) Keylogixhttp://www.activedocs.com (http://www.activedocs.com) 注意
本文提及的協力廠商產品是由與 Microsoft 無關的獨立廠商所製造。Microsoft 不以暗示或其他方式,提供與這些產品的效能或可靠性有關的保證。
將 Office 設定成可在伺服器端執行如果所有解決方案都不實用,而您決定在伺服器端進行 Office 的自動化,請先處理之前所列的問題,才能從該環境順利執行。由於這些問題大多與組態設定有關,因此沒有一套步驟能套用在所有系統上,使其 Office 自動化在伺服器端順利運作。有些組態設定會和其他選項衝突,因此每種方式都各有優缺點。可能要經過幾次實驗,才能找出最適合您環境的一種。要讓 Office 從伺服器端自動化,一般需要完成下列動作:
因此,第一個步驟是在您的伺服器端設計中限制 Office 自動化的使用,並將處理程序隔離到一部必要時可重新開機、不那麼重要的電腦上。同時亦請隔離呼叫內容,讓停止回應的呼叫用戶端不會減損基本系統服務的效能。例如,請勿從 IIS 內部利用系統執行緒直接自動化,而是改將程式碼隔離成在自己的執行緒上執行,如此一旦執行失敗,它也不會影響 IIS 整體的功能。同時也請考量您的設計能否強制安全性和驗證。由於 Office 不會強制執行伺服器端安全性,因此您的程式碼必須確定只有「受信任」的程式碼模組 (例如 ASP 網頁、指令碼檔等等),才能建立 Office 應用程式的自動化執行個體及呼叫其方法,並在要求 Office 開啟文件之前,先確定所有文件都是安全的。伺服器上的 Office 應用程式隨時都應以「高度」安全性執行。若您的設計未強制執行安全性,就是拿您伺服器的安全開玩笑! 設計就緒之後,請以防禦的角度撰寫程式碼,以嘗試防止問題發生,並在錯誤發生時進行處理。確定您的程式碼會傳遞選擇性參數的值,因為遺失或發生衝突的值有時會需要 Office 提示使用者輸入其他資訊。在所有功能中使用錯誤捕捉,以順利處理錯誤情況,並使用可由自訂設定 (在登錄或 INI 檔案中) 開啟或關閉的記錄程式碼來記錄這些錯誤。如果您執行某個動作,而該動作可能會顯示與 Office 無關的錯誤對話方塊 (例如,列印時如果印表機紙張用完,可能會讓印表機驅動程式顯示對話方塊) 時,請使用逾時或第二個執行緒來監視進度,以準備處理可能的鎖死情形。如需詳細資訊,請參閱「Microsoft 知識庫」中的下列文件: 259971 (http://support.microsoft.com/kb/259971/) How To Dismiss a Dialog Box Displayed by an Office Application with Visual Basic
使用您的記錄程式碼來追蹤問題以及除錯程式。如果您使用自訂物件集區,可以加入效能及延展性測試來監控使用並記錄影響所有用戶端的問題。中央控制器也能讓您終止錯誤的
Office 執行個體,再於必要時重新建立,以強化整體的穩定性。在程式準備可以部署之後,請確定 Office 在伺服器上的設定是否適當,可以執行合適的使用者內容。Office 需要有使用者設定檔,如果要順利地自動化,必須確定已載入使用者設定檔。在伺服器端環境中工作時,有三種方式可以完成這項工作:
288366 (http://support.microsoft.com/kb/288366/) How to configure Office applications to run under the interactive user account
第二個選項會指派特定使用者,但不允許互動。Office 會以被指派的使用者身分在隱藏的桌面上的新
WinStation 中啟動。這個選項需要一些額外設定,以確保載入使用者登錄 Hive,因為 COM/DCOM
預設不會執行這項工作。這項設定是系統共用的,因此可能會與其他程式衝突。如需以此種方式設定 Office 的詳細資訊,請參閱「Microsoft
知識庫」中的下列文件:
288367 (http://support.microsoft.com/kb/288367/) 如何設定 Office 應用程式在特定使用者帳戶下執行
第三個選項可讓您指派身分識別給特定的網站或程式碼模組,並避免設定一個全域性的固定身分識別給
Office。只要該電腦上先前已設定此身分識別,並且已載入登錄 Hive,Office
便會以該身分識別執行並正確載入。這個選項通常最有彈性也最安全,但是和前一個選項一樣,它也無法提供與可見桌面的互動,而且需要額外的設定。如需以此種方式設定
Office 的詳細資訊,請參閱「Microsoft 知識庫」中的下列文件:
288368 (http://support.microsoft.com/kb/288368/) How to configure Office applications for automation from a COM+/MTS package
您必須評估上述何種方式符合您的需求,以及對部署您的解決方案有何幫助。此處提供的資訊並不保證能夠解決所有用戶端的所有問題。建議您在部署之前先進行完整的測試。?考這篇文章中的資訊適用於:
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。 | 文章翻譯
|

回此頁最上方
