Súhrn
Vývojári môžu používať automatizáciu v balíku Microsoft Office na vytváranie vlastných riešení, ktoré využívajú možnosti a funkcie, ktoré sú zabudované do produktu balíka Office. Hoci takýto programový vývoj možno implementovať v klientskom systéme s relatívnou ľahkosťou, môže dôjsť k niekoľkým komplikáciám, ak automatizácia prebieha z kódu na strane servera, ako sú napríklad Microsoft Active Server Pages (ASP), ASP.NET, DCOM alebo systém Windows NT služby.
Tento článok popisuje komplikácie, ktorým môžu vývojári čeliť. Článok tiež ponúka alternatívy k automatizácii, ktorá môže urýchliť výkon. Vývojári by si však mali byť vedomí toho, že návrhy uvedené v tomto článku sú určené len na informačné účely. Spoločnosť Microsoft neodporúča ani nepodporuje automatizáciu balíka Office na strane servera.
Poznámka
V tejto súvislosti sa databázový stroj Access Redistributable a modul Access Runtime považujú za súčasti balíka Microsoft Office. Výraz "server-side" sa vzťahuje aj na kód, ktorý je spustený na pracovnej stanici systému Windows, ak je kód spustený z inej pracovnej stanice systému Windows ako interaktívnej stanice používateľa, ktorý je prihlásený. Napríklad kód, ktorý spúšťa Plánovač úloh v rámci konta SYSTEM, sa spúšťa v rovnakom prostredí ako kód ASP na strane servera alebo ako kód DCOM. Preto sa môžu vyskytnúť mnohé problémy, ktoré popisuje tento článok. Ďalšie informácie o pracovných staniciach systému Windows a o službe COM nájdete v časti Ďalšie informácie a v časti Referencie.
Ďalšie informácie
Všetky aktuálne verzie balíka Microsoft Office boli navrhnuté, testované a nakonfigurované tak, aby sa spúšťali ako produkty koncových používateľov na klientskej pracovnej stanici. Predpokladajú interaktívny profil pracovnej plochy a používateľa. Neposkytujú úroveň opätovného priradenia alebo zabezpečenia, ktorá je potrebná na splnenie potrieb súčastí na strane servera, ktoré sú navrhnuté tak, aby sa spúšťali bez dozoru.
Spoločnosť Microsoft v súčasnosti neodporúča a nepodporuje automatizáciu aplikácií balíka Microsoft Office zo žiadnej automatickej neinteraktívnej klientskej aplikácie alebo súčasti (vrátane ASP, ASP.NET, DCOM a NT Services), pretože Office môže pri spustení balíka Office v tomto prostredí vykazovať nestabilné správanie alebo zablokovanie.
Ak vytvárate riešenie, ktoré sa spúšťa v kontexte na strane servera, mali by ste sa pokúsiť použiť súčasti, ktoré boli zabezpečené na automatické spustenie. Prípadne by ste sa mali pokúsiť nájsť alternatívy, ktoré umožnia spustenie aspoň časti kódu na strane klienta. Ak používate aplikáciu balíka Office z riešenia na strane servera, aplikácia nebude mať veľa potrebných možností na úspešné spustenie. Okrem toho riskujete so stabilitou svojho celkového riešenia.
Problémy s používaním automatizácie balíka Office na strane servera
Vývojári, ktorí sa pokúšajú používať Office v riešení na strane servera, si musia byť vedomí piatich hlavných oblastí, v ktorých sa Office správa v dôsledku prostredia inak, ako sa očakávalo. Ak má váš kód fungovať úspešne, musíte tieto problémy vyriešiť a čo najviac minimalizovať ich účinky. Tieto problémy dôkladne zvážte pri vytváraní aplikácie. Jedno riešenie nedokáže vyriešiť všetky problémy. Rôzne návrhy vyžadujú, aby ste prvky uprednostňovali odlišne.
- Identita používateľa: Aplikácie balíka Office pri spustení aplikácií predpokladajú identitu používateľa, a to aj vtedy, keď automatizácia spustí aplikácie. Aplikácie sa snažia inicializovať panely s nástrojmi, ponuky, možnosti, tlačiarne a niektoré doplnky na základe nastavení v úľe databázy Registry používateľa, ktorý spustí aplikáciu. Mnohé služby sa spúšťajú v rámci kont, ktoré nemajú používateľské profily (napríklad konto SYSTEM alebo kontá IWAM_[názovservera]. Preto office nemusí správne inicializovať pri spustení. V takomto prípade Office vráti chybu vo funkcii CreateObject alebo vo funkcii CoCreateInstance. Aj v prípade, že je možné spustiť aplikáciu balíka Office, iné funkcie nemusia fungovať správne, ak neexistuje žiadny používateľský profil.
- Interaktivita s počítačom: Aplikácie balíka Office predpokladajú, že sa spúšťajú v interaktívnej pracovnej ploche. Za určitých okolností môže byť potrebné, aby aplikácie boli viditeľné, aby niektoré automatizačné funkcie fungovali správne. Ak sa vyskytne neočakávaná chyba alebo ak je na dokončenie funkcie potrebný nešpecifikovaný parameter, Office je navrhnutý tak, aby používateľovi zobrazil výzvu s modálnym dialógovým oknom, v rámci ktorého sa používateľa opýta, čo chce používateľ urobiť. Modálne dialógové okno na neinteraktívnej pracovnej ploche nie je možné zrušiť. Preto toto vlákno prestane reagovať (prestane reagovať) na neurčito. Hoci niektoré postupy kódovania môžu pomôcť znížiť pravdepodobnosť tohto problému, tieto postupy nemôžu úplne zabrániť problému. Samotná táto skutočnosť spôsobuje, že spúšťanie aplikácií balíka Office z prostredia na strane servera je riskantné a nepodporované.
- Opätovné priradenie a škálovateľnosť: Súčasti na strane servera musia byť vysoko reentrantné súčasti COM s viacerými vláknami, ktoré majú minimálnu režijnú a vysokú priepustnosť pre viacerých klientov. Aplikácie balíka Office sú takmer vo všetkých ohľadoch presný opak. Aplikácie balíka Office sú nenávšateľné automatizačné servery založené na sta, ktoré sú navrhnuté tak, aby poskytovali rôznorodé, ale náročné funkcie pre jedného klienta. Aplikácie ponúkajú malú škálovateľnosť ako riešenie na strane servera. Okrem toho majú aplikácie pevne stanovené obmedzenia dôležitých prvkov, ako je napríklad pamäť. Tieto položky nie je možné zmeniť prostredníctvom konfigurácie. Ešte dôležitejšie je, že aplikácie používajú globálne zdroje, ako sú súbory priradené k pamäti, globálne doplnky alebo šablóny a zdieľané automatizačné servery. To môže obmedziť počet inštancií, ktoré môžu bežať súbežne a môžu viesť k súbehu podmienok, ak sú aplikácie nakonfigurované v prostredí s viacerými klientmi. Vývojári, ktorí plánujú spustiť viac ako jednu inštanciu ľubovoľnej aplikácie balíka Office súčasne, musia zvážiť združovanie alebo serializáciu prístupu k aplikácii balíka Office, aby sa vyhli možným zablokovaniam alebo poškodeniu údajov.
- Odolnosť a stabilita: Office 2000, Office XP, Office 2003 a Office 2007 používajú technológiu Microsoft Windows Installer (MSI) na uľahčenie inštalácie a samoopravy pre koncového používateľa. MSI predstavuje pojem "inštalácia pri prvom použití." To umožňuje dynamickú inštaláciu alebo konfiguráciu funkcií v čase spustenia systému alebo častejšie pre konkrétneho používateľa. V prostredí na strane servera sa tak spomalí výkon a zvýši sa pravdepodobnosť, že sa zobrazí dialógové okno s požiadavkou používateľa na schválenie inštalácie alebo poskytnutie inštalačného disku. Hoci je to navrhnuté tak, aby sa zvýšila odolnosť balíka Office ako produktu koncového používateľa, implementácia funkcií MSI balíka Office je v prostredí na strane servera kontraproduktívne. Okrem toho nie je možné vo všeobecnosti zabezpečiť stabilitu balíka Office pri spúšťaní balíka Office na strane servera, pretože nebol navrhnutý ani testovaný na tento typ používania. Používanie balíka Office ako súčasti služby na sieťovom serveri môže znížiť stabilitu počítača, a preto môže znížiť stabilitu celej siete.
- Zabezpečenie na strane servera: Aplikácie balíka Office neboli nikdy určené na používanie na strane servera. Aplikácie balíka Office preto neberú do úvahy problémy so zabezpečením, ktorým distribuované súčasti čelia. Office neoveruje prichádzajúce požiadavky. Office vás tiež nechráni pred neúmyselným spustením makier ani pred spustením iného servera, ktorý môže spúšťať makrá, pred kódom na strane servera. Neotvárajte súbory nahraté na server z anonymnej webovej lokality. Na základe nastavení zabezpečenia, ktoré boli naposledy nastavené, môže server spúšťať makrá v kontexte správcu alebo systému s úplnými oprávneniami, a preto môže ohroziť vašu sieť. Okrem toho office používa mnoho súčastí na strane klienta (napríklad simple MAPI, WinInet a MSDAIPP), ktoré dokážu ukladať informácie o overení klienta do vyrovnávacej pamäte na zrýchlenie spracovania. Ak office využíva automatizovanú službu na strane servera, jedna inštancia môže obsluhovať viac ako jedného klienta. Ak boli informácie o overení pre danú reláciu uložené vo vyrovnávacej pamäti, jeden klient môže použiť poverenia iného klienta uložené vo vyrovnávacej pamäti. Klient preto môže získať neudelenie povolení na prístup zosobnením iných používateľov.
Okrem technických problémov je potrebné zvážiť aj problémy s licenciami. Aktuálne licenčné pokyny bránia používaniu aplikácií balíka Office na serveri na žiadosti klienta služby, pokiaľ samotní títo klienti nemajú licencované kópie balíka Office. Používanie automatizácie na strane servera na poskytovanie funkcií balíka Office pre pracovné stanice bez platnej licencie sa nevzťahuje na licenčnú zmluvu koncového používateľa (EULA).
Okrem týchto problémov sa pri pokuse o automatizáciu servera balíka Office môže vyskytnúť jedna z nasledujúcich bežných chýb:
Funkcia CreateObject a funkcia CoCreateInstance vrátia niektoré z nasledujúcich chybových hlásení počas spustenia a nedajú sa spustiť pre automatizáciu.
Správa 1Poznámka
Chyba 429 v čase spustenia: Súčasť ActiveX nemôže vytvoriť objekt
Správa 2
Poznámka
Chyba 70 pri spustení: Povolenie zamietnuté
Správa 3
Poznámka
CO_E_SERVER_EXEC_FAILURE (0x80080005): Spustenie servera zlyhalo
Správa 4
Poznámka
E_ACCESSDENIED (0x80070005): Prístup odmietnutý
Po otvorení dokumentu balíka Office sa zobrazí niektoré z nasledujúcich chybových hlásení.
Správa 1Poznámka
Chyba spustenia 5981 (0x800A175D): Nepodarilo sa otvoriť ukladací priestor makier
Správa 2
Poznámka
Chyba 1004 v čase spustenia: Metóda ~objektu ~zlyhala
Funkcia CreateObject a funkcia CoCreateInstance prestanú reagovať a nikdy nekončia alebo trvá dlho, kým sa vrátia. Na niektorých serveroch je vytvorenie rýchle, ale v denníku udalostí systému Windows sa zobrazí 1004 chýb, ktoré naznačujú, že aplikácia bola zastavená.
Niektoré funkcie neočakávane zlyhajú alebo prestanú reagovať donekonečna z dôvodu upozornenia používateľa alebo iného dialógového okna, ktoré vyžaduje pozornosť používateľa.
Spustenie viacerých požiadaviek alebo záťažového testovania spôsobí, že kód zlyhá, prestane reagovať alebo zlyhá pri vytváraní alebo ukončení aplikácie balíka Office. V takom prípade proces zostane spustený v pamäti a nedá sa ukončiť, alebo všetky inštancie aplikácie, ktorá je automatizovaná, zlyhajú od tohto bodu.
Okrem uvedených problémov sa môžu vyskytnúť aj iné problémy alebo hlásenia, tieto problémy sa však zvyčajne vyskytujú v dôsledku piatich hlavných problémov uvedených vyššie v tomto článku.
Alternatívy k automatizácii na strane servera
Spoločnosť Microsoft dôrazne odporúča, aby vývojári našli alternatívy k automatizácii balíka Office, ak potrebujú vyvíjať riešenia na strane servera. Z dôvodu obmedzení návrhu balíka Office zmeny konfigurácie balíka Office nestačia na vyriešenie všetkých problémov. Spoločnosť Microsoft dôrazne odporúča niekoľko alternatív, ktoré nevyžadujú inštaláciu balíka Office na strane servera a ktoré môžu vykonávať väčšinu bežných úloh efektívnejšie a rýchlejšie ako automatizácia. Pred zapojením balíka Office ako súčasti na strane servera do projektu zvážte alternatívy.
Väčšina úloh automatizácie na strane servera zahŕňa vytvorenie alebo úpravu dokumentu. Office 2007 podporuje nové formáty súborov Open XML, ktoré vývojárom umožňujú vytvárať, upravovať, čítať a transformovať obsah súborov na strane servera. Tieto formáty súborov používajú priestor názvov System.IO.Package.IO v rozhraní Microsoft .NET 3.x Framework na úpravu súborov balíka Office bez použitia samotných klientskych aplikácií balíka Office. Toto je odporúčaná a podporovaná metóda na spracovanie zmien v súboroch balíka Office zo služby.
Formáty súborov Open XML sú verejným štandardom.
Spoločnosť Microsoft poskytuje súpravu SDK na manipuláciu s formátmi súborov Open XML z rozhrania .NET 3.x Framework. Ďalšie informácie o SDK a o tom, ako používať SDK na vytváranie alebo úpravu súborov Open XML, nájdete na nasledujúcich webových lokalitách microsoft developer network (MSDN):
Postup: Manipulácia s dokumentmi formátov Office Open XML
Manipulácia Word 2007 Files pomocou objektového modelu Open XML (časť 1 z 3)
Manipulácia s Word 2007 Files pomocou objektového modelu Open XML (2. časť 3)
Manipulácia s Files Word 2007 pomocou objektového modelu Open XML (3. časť 3)
Pri streamovaní súborov Open XML zo služby ASP alebo z ASP.NET musíte zadať správny typ viacúčelového internetového rozšírenia (MIME) pre obsah, ktorý streamujete. Zoznam typov MIME pre súbory balíka Office 2007 nájdete na nasledujúcej webovej lokalite:
Typy MIME formátu súborov balíka Office 2007 na streamovanie obsahu HTTP
Ak sa zameriavate iba na klientov balíka Office 2007 a nechcete v riešení vyžadovať používanie súboru Open XML, môžete použiť iné formáty súborov balíka Office, ako napríklad HTML, XML a RTF. Potom môžete streamovať tieto súbory do klienta pomocou typu MIME, aby sa výsledný text zobrazil v balíku Office. Dokument možno upraviť, uložiť a dokonca vrátiť na server pomocou asp na serveri.
Ďalšie informácie o niektorej z týchto tém a príklady, ktoré ukazujú, ako ich implementovať, nájdete kliknutím na čísla v nasledujúcich článkoch v databáze Microsoft Knowledge Base:
198703 Automatizácia Excelu z jazyka VBScript na strane klienta
Ako dotazovať a aktualizovať excelové údaje pomocou ADO z ASP
286023 Používanie komponentu ActiveX VB na automatizáciu Word z Internet Explorera
Ak váš podnik vyžaduje vytvorenie binárnych formátov súborov balíkov Office 97, Office 2000, Office XP a Office 2003 na strane servera, dodávatelia tretích strán ponúkajú súčasti, ktoré vám môžu pomôcť. Spoločnosť Microsoft neposkytuje žiadne takéto súčasti, takže budete musieť buď vytvoriť riešenie sami, alebo si ho zakúpiť od dodávateľa tretej strany. K dispozícii je mnoho rôznych produktov tretích strán. Každé riešenie by ste mali preskúmať tak, aby čo najlepšie zodpovedalo potrebám vášho podniku.
Ak chcete vytvoriť vlastné riešenie, ktoré priamo upravuje formáty binárnych súborov balíkov Office 97, Office 2000, Office XP a Office 2003, môžete bezplatne získať špecifikácie formátu súboru podľa podmienok prísľubu OSP (Open Specification Promise). Pre dokumentáciu alebo produkty, ktoré vytvoríte, nie je k dispozícii žiadna technická podpora, ale dokumentácia je k dispozícii.
Riešenia na strane servera tiež môžu používateľom umožniť nahrávanie súborov a potom server vykresliť súbory na zobrazenie na webe alebo na iných médiách. Spoločnosť Microsoft v súčasnosti pracuje na ponúkaní takýchto funkcií a poskytuje staršiu verziu tejto možnosti v službe Microsoft Excel Services.
Excel Services je nová serverová technológia, ktorá je súčasťou Microsoft Office SharePoint Servera 2007 a ktorá umožňuje načítať, vypočítať a zobraziť excelové zošity na Office SharePoint Serveri 2007. Ďalšie informácie o Excel Services nájdete na týchto webových lokalitách microsoft developer network (MSDN):
Návod: Vývoj vlastnej aplikácie pomocou webových služieb Excel Web Services
Vytváranie podnikových aplikácií pomocou formátov Excel Services a Office Open XML Word Automation Services je nová aplikácia služby na SharePoint Serveri 2010. Word Automation Services poskytuje automatickú konverziu dokumentov na strane servera na formáty, ktoré podporuje klientska aplikácia Microsoft Word.
prehľad služieb Word Automation Services
Predstavujeme Word Automation Services. Musíte vyhodnotiť, ktoré z možností, ktoré tento článok popisuje, vyhovuje vašim potrebám a ako najlepšie nasadiť riešenie. Informácie, ktoré tento článok poskytuje, nie sú zaručené na vyriešenie všetkých problémov pre všetkých klientov. Odporúčame, aby ste pred nasadením riešenia dôkladne otestujte svoje riešenie.