Shrnutí
Vývojáři můžou pomocí automatizace v systém Microsoft Office vytvářet vlastní řešení, která využívají možnosti a funkce integrované do produktu Office. I když se takový programový vývoj dá v klientském systému implementovat relativně snadno, může dojít k řadě komplikací, pokud automatizace probíhá z kódu na straně serveru, jako je například Microsoft Active Server Pages (ASP), ASP.NET, DCOM nebo systém Windows NT služba.
Tento článek popisuje komplikace, se kterými se můžou setkat vývojáři. Článek také nabízí alternativy ke službě Automation, které můžou zrychlit výkon. Vývojáři by si však měli uvědomit, že návrhy, které tento článek poskytuje, jsou pouze pro informační účely. Microsoft nedoporučuje ani nepodporuje automatizaci Office na straně serveru.
Poznámka
V tomto kontextu jsou redistribuovatelné databázového stroje Accessu a modul runtime accessu považovány za součásti sady systém Microsoft Office. Termín "server-side" se vztahuje také na kód spuštěný na pracovní stanici s Windows, pokud je spuštěn z jiné pracovní stanice Windows než z interaktivní stanice přihlášeného uživatele. Například kód spuštěný Plánovačem úloh pod účtem SYSTEM běží ve stejném prostředí jako kód ASP na straně serveru nebo jako kód DCOM. Proto může dojít k mnoha problémům, které tento článek popisuje. Další informace o pracovních stanicích Windows a o modelu COM najdete v části Další informace a Odkazy.
Další informace
Všechny aktuální verze systém Microsoft Office byly navrženy, testovány a nakonfigurovány tak, aby běžely jako produkty koncových uživatelů na klientské pracovní stanici. Předpokládají interaktivní desktopový a uživatelský profil. Neposkytují úroveň obnovení nebo zabezpečení, která je nezbytná pro splnění potřeb komponent na straně serveru, které jsou navrženy tak, aby běžely bezobslužně.
Microsoft v současné době nedoporučuje a nepodporuje automatizaci aplikací systém Microsoft Office z žádné bezobslužné, neinteraktivní klientské aplikace nebo komponenty (včetně ASP, ASP.NET, DCOM a NT Services), protože Office může při spuštění sady Office v tomto prostředí vykazovat nestabilní chování nebo zablokování.
Pokud vytváříte řešení, které běží v kontextu na straně serveru, měli byste se pokusit použít komponenty, které byly bezpečné pro bezobslužné spuštění. Nebo byste se měli pokusit najít alternativy, které umožní alespoň část kódu spustit na straně klienta. Pokud používáte aplikaci Office z řešení na straně serveru, aplikace nebude mít k úspěšnému spuštění mnoho potřebných funkcí. Kromě toho budete riskovat stabilitu celkového řešení.
Problémy s používáním automatizace Office na straně serveru
Vývojáři, kteří se snaží používat Office v řešení na straně serveru, musí vědět o pěti hlavních oblastech, ve kterých se Office kvůli prostředí chová jinak, než se čekalo. Pokud se má váš kód úspěšně spustit, musíte tyto problémy vyřešit a co nejvíce minimalizovat jejich účinky. Při sestavování aplikace tyto problémy pečlivě zvažte. Jedno řešení nemůže vyřešit všechny problémy. Různé návrhy vyžadují, abyste upřednostnit prvky odlišně.
- Identita uživatele: Aplikace Office přebírají identitu uživatele při spuštění aplikací, a to i v případě, že aplikace spouští automatizace. Aplikace se pokusí inicializovat panely nástrojů, nabídky, možnosti, tiskárny a některé doplňky na základě nastavení v podregistru registru uživatelů pro uživatele, který aplikaci spustí. Mnoho služeb běží pod účty, které nemají žádné profily uživatelů (například účet SYSTEM nebo účty IWAM_[servername]. Proto office nemusí při spuštění správně inicializovat. V takovém případě Office vrátí chybu u funkce CreateObject nebo Funkce CoCreateInstance. I když je možné aplikaci Office spustit, nemusí ostatní funkce správně fungovat, pokud neexistuje žádný profil uživatele.
- Interaktivita s desktopovou aplikací: Aplikace Office předpokládají, že běží na interaktivní ploše. V některých případech může být potřeba, aby aplikace byly viditelné, aby určité funkce automatizace fungovaly správně. Pokud dojde k neočekávané chybě nebo pokud je k dokončení funkce potřeba nespecifikovaný parametr, office je navržený tak, aby se uživateli zobrazilo modální dialogové okno s dotazem, co chce uživatel udělat. Modální dialogové okno na neinteraktivní ploše nelze zavřít. Proto toto vlákno přestane reagovat (zablokuje se) neomezeně dlouho. I když některé postupy kódování můžou pomoct snížit pravděpodobnost tohoto problému, tyto postupy nemůžou problému zcela zabránit. Tato skutečnost sama o sobě činí spouštění aplikací Office ze serverového prostředí rizikovým a nepodporovaným.
- Opětovné připojení a škálovatelnost: Součásti modelu COM na straně serveru musí být vysoce rozšířené a vícevláknové komponenty modelu COM, které mají minimální režii a vysokou propustnost pro více klientů. Aplikace Office jsou téměř ve všech ohledech přesným opakem. Aplikace Office jsou nereající se automatizační servery založené na sta, které jsou navržené tak, aby poskytovaly různorodé, ale na prostředky náročné funkce pro jednoho klienta. Aplikace nabízejí malou škálovatelnost jako řešení na straně serveru. Kromě toho mají aplikace pevné limity důležitých prvků, jako je paměť. Tyto hodnoty nelze změnit prostřednictvím konfigurace. Ještě důležitější je, že aplikace používají globální prostředky, jako jsou soubory mapované paměti, globální doplňky nebo šablony a sdílené automatizační servery. To může omezit počet instancí, které můžou běžet souběžně, a může vést k podmínkám časování, pokud jsou aplikace nakonfigurované v prostředí s více klienty. Vývojáři, kteří plánují spustit více než jednu instanci libovolné aplikace Office najednou, musí zvážit "sdružování" nebo serializaci přístupu k aplikaci Office, aby se zabránilo potenciálnímu zablokování nebo poškození dat.
- Odolnost a stabilita: Office 2000, Office XP, Office 2003 a Office 2007 používají technologii Instalační služba systému Microsoft Windows (MSI), která koncovému uživateli usnadňuje instalaci a samoobslužné opravy. MSI zavádí koncept "nainstalovat při prvním použití". To umožňuje dynamicky instalovat nebo konfigurovat funkce pro systém nebo častěji pro konkrétního uživatele. V prostředí na straně serveru to zpomaluje výkon a zvyšuje pravděpodobnost, že se zobrazí dialogové okno, které uživatele požádá o schválení instalace nebo poskytnutí instalačního disku. I když je tato možnost navržená tak, aby zvýšila odolnost Office jako produktu koncového uživatele, implementace funkcí MSI office je v prostředí na straně serveru kontraproduktivní. Kromě toho nelze při spuštění Office na straně serveru zajistit stabilitu Office obecně, protože pro tento typ použití nebyl navržen ani testován. Použití Office jako součásti služby na síťovém serveru může snížit stabilitu tohoto počítače, a proto může snížit stabilitu celé sítě.
- Zabezpečení na straně serveru: Aplikace Office nebyly nikdy určeny pro použití na straně serveru. Aplikace Office proto nevezmou v úvahu problémy se zabezpečením, kterým čelí distribuované komponenty. Office neověřuje příchozí požadavky. Office vás také nechrání před neúmyslným spuštěním maker nebo před spuštěním jiného serveru, na kterém by mohla být spuštěna makra, z kódu na straně serveru. Neotevírejte soubory nahrané na server z anonymního webu. V závislosti na naposledy nastavených nastaveních zabezpečení může server spouštět makra v kontextu správce nebo systému s úplnými oprávněními, a proto může ohrozit vaši síť. Kromě toho Office používá mnoho komponent na straně klienta (například Simple MAPI, WinInet a MSDAIPP), které můžou ukládat ověřovací informace klienta do mezipaměti a zrychlit zpracování. Pokud je Office automatizovaný na straně serveru, jedna instance může obsluhovat více než jednoho klienta. Pokud byly ověřovací informace pro tuto relaci uloženy v mezipaměti, může jeden klient použít přihlašovací údaje jiného klienta uloženého v mezipaměti. Proto může klient získat neudělená přístupová oprávnění zosobněním jiných uživatelů.
Kromě technických problémů je potřeba zvážit také problémy s licencováním. Aktuální pokyny pro licencování brání používání aplikací Office na serveru k obsluhování žádostí klientů, pokud tito klienti nemají licencované kopie Office. Licenční smlouva s koncovým uživatelem (EULA) se nevztahuje na použití automatizace na straně serveru k poskytování funkcí Office pro nelicencované pracovní stanice.
Kromě těchto problémů může při pokusu o automatizaci office na straně serveru dojít k jedné z následujících běžných chyb:
Funkce CreateObject a CoCreateInstance vrátí jednu z následujících chybových zpráv za běhu a nelze je spustit pro službu Automation.
Zpráva 1Poznámka
Chyba 429 za běhu: Komponenta ActiveX nemůže vytvořit objekt
Zpráva 2
Poznámka
Chyba za běhu 70: Oprávnění byla odepřena
Zpráva 3
Poznámka
CO_E_SERVER_EXEC_FAILURE (0x80080005): Spuštění serveru se nezdařilo.
Zpráva 4
Poznámka
E_ACCESSDENIED (0x80070005): Přístup odepřen
Když otevřete dokument Office, zobrazí se jedna z následujících chybových zpráv.
Zpráva 1Poznámka
Chyba 5981 za běhu (0x800A175D): Nepodařilo se otevřít úložiště maker
Zpráva 2
Poznámka
Chyba 1004 za běhu: Metoda ~objektu ~selhala.
Funkce CreateObject a Funkce CoCreateInstance přestanou reagovat a nikdy se nedokončí nebo se vrátí dlouhou dobu. Na některých serverech je vytvoření rychlé, ale v protokolu událostí Windows se zobrazují chyby 1004, které značí, že aplikace byla zastavena.
Některé funkce neočekávaně selžou nebo přestanou reagovat po neomezenou dobu kvůli upozornění uživatele nebo jinému dialogovému oknu, které vyžaduje pozornost uživatele.
Spuštění více požadavků nebo zátěžového testování způsobí, že kód selže, přestane reagovat nebo se chybově ukončí při vytvoření nebo ukončení aplikace Office. Pokud k tomu dojde, proces zůstane spuštěný v paměti a nelze ho ukončit, nebo všechny instance aplikace, která je automatizovaná, od tohoto okamžiku selžou.
Kromě zde uvedených problémů nebo zpráv se můžou objevit i další problémy nebo zprávy, k těmto problémům ale obvykle dochází v důsledku pěti hlavních problémů uvedených výše v tomto článku.
Alternativy ke službě Automation na straně serveru
Microsoft důrazně doporučuje, aby vývojáři našli alternativy k automatizaci Office, pokud potřebují vyvíjet řešení na straně serveru. Vzhledem k omezením návrhu Office nejsou změny konfigurace Office dostatečné k vyřešení všech problémů. Společnost Microsoft důrazně doporučuje řadu alternativ, které nevyžadují instalaci Office na straně serveru a které můžou provádět většinu běžných úloh efektivněji a rychleji než automatizace. Než do projektu zapojíte Office jako součást na straně serveru, zvažte alternativy.
Většina úloh automatizace na straně serveru zahrnuje vytváření nebo úpravy dokumentů. Office 2007 podporuje nové formáty souborů Open XML, které vývojářům umožňují vytvářet, upravovat, číst a transformovat obsah souborů na straně serveru. Tyto formáty souborů používají System.IO.Package.IO obor názvů v rozhraní Microsoft .NET 3.x Framework k úpravě souborů Office bez použití samotných klientských aplikací Office. Toto je doporučená a podporovaná metoda pro zpracování změn souborů Office ze služby.
Formáty souborů Open XML jsou veřejným standardem.
Microsoft poskytuje sadu SDK pro manipulaci s formáty souborů Open XML z rozhraní .NET 3.x Framework. Další informace o sadě SDK a o použití sady SDK k vytvoření nebo úpravě souborů Open XML naleznete na následujících webech microsoft developer network (MSDN):
Dokumentace k sadě Open XML SDK
Postupy: Manipulace s dokumenty formátu Office Open XML
Manipulace s Word 2007 Files pomocí objektového modelu Open XML (část 1 ze 3)
Manipulace s Word 2007 Files pomocí objektového modelu Open XML (část 2 ze 3)
Manipulace s Word 2007 Files pomocí objektového modelu Open XML (část 3 ze 3)
Vytváření Server-Side řešení generování dokumentů pomocí objektového modelu Open XML (část 1 ze 2)
Vytváření Server-Side řešení generování dokumentů pomocí objektového modelu Open XML (část 2 ze 2)
Při streamování souborů Open XML z ASP nebo z ASP.NET musíte pro obsah, který streamujete, zadat správný typ MIME (Multipurpose Internet Mail Extension). Seznam typů MIME pro soubory sady Office 2007 naleznete na následujícím webu:
Typy MIME formátu souborů office 2007 pro streamování obsahu HTTP
Pokud cílíte jenom na klienty před Office 2007 a nechcete v řešení vyžadovat použití Open XML, můžete použít jiné nebinární formáty souborů Office, jako je HTML, XML a RTF. Tyto soubory pak můžete streamovat do klienta pomocí typu MIME, aby se výsledný text zobrazil v Office. Dokument lze upravit, uložit a dokonce vrátit na server pomocí asp na serveru.
Další informace o některém z těchto témat a příklady, které ukazují, jak je implementovat, získáte v následujících článcích znalostní báze znalostní báze Microsoft Knowledge Base:
198703 Jak automatizovat Excel z jazyka VBScript na straně klienta
Dotazování a aktualizace dat aplikace Excel pomocí ADO z ASP
286023 Použití komponenty ActiveX VB pro automatizaci Word z Internet Exploreru
Pokud vaše firma vyžaduje vytvoření binárních formátů souborů Office 97, Office 2000, Office XP a Office 2003 na straně serveru, nabízejí externí dodavatelé komponenty, které vám můžou pomoct. Microsoft žádné takové komponenty neposkytuje, takže budete muset buď vytvořit řešení sami, nebo si ho koupit od jiného dodavatele. K dispozici je mnoho různých produktů třetích stran. Měli byste prozkoumat jednotlivá řešení tak, aby co nejlépe odpovídala potřebám vašeho dodavatele.
Pokud chcete vytvořit vlastní řešení, které upravuje přímo binární formáty souborů Office 97, Office 2000, Office XP a Office 2003, můžete získat specifikace formátu souboru zdarma podle podmínek OSP (Microsoft Open Specification Promise). Pro dokumentaci nebo produkty, které vytvoříte, není k dispozici žádná technická podpora, ale dokumentace je k dispozici.
Serverová řešení také mohou chtít uživatelům povolit nahrávání souborů a pak nechat server vykreslit soubory pro zobrazení na webu nebo na jiných médiích. Společnost Microsoft v současné době pracuje na tom, aby tyto funkce nabízela, a poskytuje v Excel Services dřívější verzi této funkce.
Excel Services je nová serverová technologie, která je součástí systém Microsoft Office SharePoint Serveru 2007 a umožňuje načíst, vypočítat a zobrazit sešity aplikace Excel na serveru Office SharePoint Server 2007. Další informace o Excel Services naleznete na následujících webech msdn (web MSDN (Microsoft Developer Network)):
Návod: Vývoj vlastní aplikace pomocí excelových webových služeb
Vytváření obchodních aplikací pomocí formátů Excel Services a Office Open XML Word Automation Services je nová aplikace služby v SharePoint Serveru 2010. Word Automation Services poskytuje bezobslužnou konverzi dokumentů na straně serveru do formátů podporovaných klientskou aplikací Microsoft Word.
Přehled služby Word Automation Services
Představujeme Word Automation Services: Je potřeba vyhodnotit, které z možností popsaných v tomto článku vyhovují vašim potřebám a jak nejlépe nasadit vaše řešení. Informace uvedené v tomto článku nezaručí, že vyřeší všechny problémy pro všechny klienty. Před nasazením řešení doporučujeme řešení důkladně otestovat.