Vurderinger for serversiden automatisering av Office

Gjelder: Office ProductsAccess 2010Excel 2010

Sammendrag


Utviklere kan bruke automatisering i Microsoft Office til å bygge tilpassede løsninger som bruker egenskapene og funksjonene som er bygd inn i Office-produktet. Selv om slike programmatisk utvikling kan implementeres på et klientsystem med relativt små problemer, kan det oppstå en rekke komplikasjoner Hvis automatisering finner sted fra kode på serversiden som Microsoft Active Server Pages (ASP), ASP.NET, DCOM eller en Windows NT-tjeneste. Denne artikkelen omhandler komplikasjoner som utviklere kan står overfor. Artikkelen gir også alternativer for automatiseringen som kan øke ytelsen. Utviklere bør være oppmerksom på, at forslagene som gir denne artikkelen er bare til informasjonsformål. Microsoft anbefaler ikke eller støtter serversiden automatisering av Office. Obs!  I denne sammenhengen Microsoft 2007 Office System-driveren og 2010 Access-databasemotoren, betraktes som Microsoft Office-komponenter. Begrepet "server-side" gjelder også for kode som kjøres på en Windows-arbeidsstasjon Hvis koden kjøres fra en Windows-arbeidsstasjon enn interaktive vindusstasjonen fra brukeren som er logget på. For eksempel kjører kode som er startet av Oppgaveplanlegging under systemkontoen i samme miljø som "server-side" ASP-kode eller som DCOM-kode. Derfor kan mange av problemene som beskrives i denne artikkelen oppstå. Hvis du vil ha mer informasjon om Windows-arbeidsstasjoner og COM, kan du se delen "Mer informasjon" og "Referanser"-delen.

Mer informasjon


Alle gjeldende versjoner av Microsoft Office er utformet, testet og konfigurert til å kjøre som sluttbrukerprodukter på en klientarbeidsstasjonen. Disse eksemplene antar en interaktiv skrivebordet og bruker profil. De har ikke nivået for noe eller sikkerhet som er nødvendig for å dekke behovene til server-side komponentene som er utformet for å kjøre uovervåket.Microsoft anbefaler ikke for øyeblikket, og støtter ikke, automatisering av Microsoft Office-programmer fra en uovervåket, ikke-interaktiv klientprogrammet eller komponent (inkludert ASP, ASP.NET, DCOM og NT Services), fordi Office kan oppføre seg virkemåte for ustabilt og/eller vranglås når Office kjører i dette miljøet.Hvis du bygger en løsning som kan kjøres i en kontekst for serversiden, bør du prøve å bruke komponenter som har blitt gjort trygt for uovervåket kjøring. Eller du bør prøve å finne alternativer som tillater minst en del av kode som kjøres på klientsiden. Hvis du bruker et Office-program fra en serversideløsning, mangler programmet mange av de nødvendige funksjonene kan kjøres normalt. I tillegg, du vil være å ta risikoer med stabiliteten til den overordnede løsningen.

Problemer med å bruke serversiden automatisering av Office

Utviklere som prøver å bruke Office i en serversideløsning må du være oppmerksom på fem viktige områder der Office fungerer annerledes enn forventet på grunn av miljøet. Hvis koden skal kjøres på riktig måte, må du løse disse problemene og redusere virkningene så mye som mulig. Vurder disse problemene nøye når du bygger opp programmet. En løsning kan ikke løse alle problemer. Ulike utforminger krever at du prioritere elementer på forskjellige måter.

  • Brukeridentiteten: kontorapplikasjoner anta brukeridentitet når programmene kjøres, selv når du starter programmer for automatisering. Programmene som prøver å initialisere verktøylinjer, menyer, alternativer, skrivere og enkelte tillegg basert på innstillingene i registerstrukturen bruker for brukeren som starter programmet. Mange tjenester kjøres under kontoer som har ingen brukerprofiler (for eksempel SYSTEM-kontoen eller IWAM_ [servernavn]-kontoer). Derfor kanskje Office ikke riktig initialisert ved oppstart. I dette tilfellet returnerer Office en feil i funksjonen CreateObject eller CoCreateInstance -funksjon. Selv om Office-programmet kan startes, virker andre funksjoner ikke på riktig måte hvis det finnes ingen brukarprofil.
  • Interaktivitet med skrivebordet: Office-programmer forutsetter at de kjøres under en interaktive skrivebordet. I noen tilfeller kan må programmer gjøres synlig for bestemte funksjoner for automatisering til å fungere riktig. Hvis det oppstår en uventet feil, eller hvis en uspesifisert parameter er nødvendig for å fullføre en funksjon, er Office utformet for å be brukeren med en modal dialogboks som spør brukeren om hva brukeren ønsker å gjøre. En sperrende dialogboks på en ikke-interaktive skrivebordet kan være lukket. Derfor denne tråden slutter å svare (henger) i det uendelige. Selv om enkelte fremgangsmåter for koding kan redusere sannsynligheten for at dette problemet, disse fremgangsmåtene ikke forhindre at problemet fullstendig. Dette faktum alene gjør kjører Office-programmer fra et miljø for serversiden risikabelt og støttes ikke.
  • Noe og skalerbarhet: komponenter på serversiden må være svært reentrant, flertrådige COM-komponenter som har minimal belastning og høy gjennomstrømning for flere klienter. Office-programmer finnes i nesten alle måter det nøyaktige motsatt. Office-programmer er ikke reentrant, STA-baserte automatiseringsservere som er utformet for å gi forskjellige men ressurskrevende funksjonalitet for en enkelt klient. Programmene tilbyr mye skalerbarhet som en serversideløsning. I tillegg har programmene faste grenser for viktige elementer, for eksempel minne. Disse kan ikke endres gjennom konfigurasjon. Enda viktigere, bruker programmene globale ressurser eksempel minnetilordnet filer, globale tillegg eller maler og delte automatiseringsservere. Dette kan begrense antall forekomster som kan kjøre samtidig, og kan føre til Kappløpssituasjoner hvis programmene som er konfigurert i et miljø med flere klient. Utviklere som har tenkt å kjøre flere forekomster av et hvilket som helst Office-program på samme tid, må du vurdere "pooling" eller serialisering av tilgang til Office-programmet for å unngå mulig vranglås eller skadede data.
  • Robusthet og stabilitet: Office 2000, Office XP, Office 2003 og Office 2007 kan du bruke Microsoft Windows Installer (MSI) teknologi for å gjøre installasjon og reparere selvforsynt enklere for en sluttbruker. MSI Introduserer konseptet med "installeres ved første gangs bruk". Dette gjør at funksjoner som skal installeres eller konfigureres under kjøring i systemet, eller oftere for en bestemt bruker dynamisk. I et server-side, dette både tregere ytelse og øker sannsynligheten for at det kan vises en dialogboks som ber brukeren om å godkjenne installasjonen, eller til å gi en installasjonsdiskett. Selv om dette er utformet for å øke robusthet av Office som en sluttbruker-produkt, er i Office-implementeringen av MSI-funksjoner mot sin hensikt i et miljø med server-side. Dessuten stabiliteten til Office Generelt kan ikke være sikker på når Office kjører server-side fordi den ikke er utformet eller testet for bruk av denne typen. Ved hjelp av Office som en tjeneste på en nettverksserver, kan redusere stabiliteten på datamaskinen, og derfor kan redusere stabiliteten i hele nettverket.
  • Serversiden sikkerhet: Office-programmer ikke var ment for bruk på serversiden. Derfor ta Office-programmer ikke i betraktning sikkerhetsproblemer som distribuert komponenter ansikt. Office godkjenner ikke innkommende forespørsler. Office også beskytter ikke deg fra å utilsiktet kjøre makroer eller starter en annen server som kan kjøre makroer, fra server-side-koden. Ikke åpne filer som er lastet opp til serveren fra en anonym Web-området. Avhengig av sikkerhetsinnstillingene som er angitt sist, serveren kan kjøre makroer under en Administrator- eller sammenheng med ubegrenset tilgang og kan derfor bryte nettverket. I tillegg bruker Office mange komponenter for klientside (for eksempel Simple MAPI, WinInet og MSDAIPP) som kan hurtigbufre klienten godkjenningsinformasjon til raskere behandling. Hvis Office blir automatisert serversiden, kan én forekomst service på mer enn én klient. Bufret godkjenningsinformasjon for denne økten, kan én klient bruke den bufrede legitimasjonen til en annen klient. Klienten kan derfor få ikke gis tillatelser ved å etterligne andre brukere.

I tillegg til tekniske problemer, må du også vurdere lisensiering problemer. Gjeldende retningslinjer for lisensiering forhindre Office-programmer brukes på en server på klientforespørsler tjenesten, med mindre de klientene selv ha lisensierte kopier av Office. Ved hjelp av automatisering for serversiden til å gi funksjonalitet for Office ulisensiert arbeidsstasjoner, dekkes ikke av lisensavtalen for sluttbrukere (EULA).I tillegg til disse problemene, kan ett av følgende vanlige feil oppstå når du prøver å automatisere Office server-side:

  • CreateObject -funksjonen og CoCreateInstance -funksjonen returnerer én av følgende feilmeldinger for kjøretid og kan ikke startes for automatisering.
    Melding 1
    Kjøretidsfeil '429': ActiveX-komponent kan ikke opprette objekt
    Melding 2
    Kjøretidsfeil '70': Ingen tilgang
    Melding 3
    CO_E_SERVER_EXEC_FAILURE (0x80080005): Serverutføringen mislyktes
    Meldingen 4
    E_ACCESSDENIED (0x80070005): Ingen tilgang
  • Når du åpner et Office-dokument, får du en av følgende feilmeldinger.
    Melding 1
    Kjøretidsfeil 5981 (0x800A175D): kan ikke åpne makro-lagring
    Melding 2
    Kjøretidsfeil '1004': metoden ' ~' for objektet ' ~' mislyktes
  • CreateObject -funksjonen og funksjonen CoCreateInstance slutter å svare og aldri ferdig, eller det tar lang tid å returnere. Opprettelsen er fast på noen servere, men feil 1004 vises i hendelsesloggen i Windows, som angir at programmet ble stoppet.
  • Visse funksjoner mislykkes uventet eller slutter å svare i det uendelige på grunn av en bruker, eller andre dialogboks som krever handling fra brukeren.
  • Kjøre flere forespørsler eller stress-testing årsaker koden mislykkes, slutter å svare eller krasje på opprettelse eller avslutning av et Office-program. Når dette skjer, enten prosessen kjøres i minne og kan ikke avbrytes, eller alle forekomster av programmet som blir automatisert feil fra dette punktet på.

Andre problemer eller meldinger vises i tillegg til de som vises her, men disse problemene vanligvis oppstår som følge av de fem viktigste problemene som er oppført tidligere i denne artikkelen.

Alternativer til serversiden automatisering

Microsoft sterkeste anbefaler på det at utviklere finne alternativer til automatisering av Office hvis de trenger for å utvikle løsninger på serversiden. På grunn av begrensninger i Office-utformingen er endringer i Office-konfigurasjonen ikke nok til å løse alle problemer. Microsoft anbefaler en rekke muligheter som ikke krever at Office er installert på serversiden, og som kan utføre de fleste vanlige oppgaver raskere og raskere enn automatisering. Før du berører Office som en server-side komponent i prosjektet, bør du vurdere alternativer.De fleste serversiden automatisering aktiviteter omfatter dokumentoppretting eller redigering. Office 2007 støtter nye åpne XML-filformater som lar utviklere til å opprette, redigere, lese og transformere innholdet i filer på serversiden. Disse filformatene bruker System.IO.Package.IO -navneområde i Microsoft .NET 3.x Framework for å redigere Office-filer uten å bruke Office-klientprogrammer seg selv. Dette er metoden anbefales og støttes for håndtering av endringer i Office-filer fra en tjeneste.Åpne XML-filformater er en felles standard.

Microsoft tilbyr en SDK for manipulering av åpne XML-filformater fra .NET Framework-3.x. Hvis du vil ha mer informasjon om SDK og bruke SDK til å opprette eller redigere det åpne XML-filer, kan du gå til følgende webområder for Microsoft Developer Network (MSDN):

Når du direkteavspiller Open XML-filer fra ASP eller ASP.NET, må du oppgi riktig Multipurpose Internet Mail Extension (MIME)-type for innholdet du sender. En liste over MIME-typene for Office 2007-filer, kan du gå til følgende webområde:

Hvis du bruker før Office 2007-klienter, og du ikke vil kreve bruk av åpne XML-formatet i løsningen, kan du bruke andre binære Office-filformater, for eksempel HTML, XML- og RTF. Du kan deretter dele disse filene til en klient ved hjelp av en MIME-type, slik at teksten vises i Office. Dokumentet kan redigeres, lagres og selv tilbake til serveren ved hjelp av ASP på serveren.For mer informasjon om noen av disse emnene, og eksempler som viser hvordan du implementerer dem, klikker du følgende artikkelnumre for å vise artiklene i Microsoft Knowledge Base:

198703 hvordan du kan automatisere Microsoft Excel fra en klientsiden VBScript
278973 ExcelADO viser hvordan du kan bruke ADO til å lese og skrive data i Excel-arbeidsbøker
286023 hvordan du bruker et VB ActiveX-komponent for Word automation fra Internet Explorer

Hvis bedriften din krever serversiden opprettelsen av de Office 97, Office 2000, Office XP og binærfilformater i Office 2003, tilbyr tredjeparts leverandører komponenter som kan hjelpe deg. Microsoft tilbyr ikke slike komponenter, så du trenger å bygge en løsning for deg selv eller kjøpe en fra en tredjepartsleverandør. Det finnes mange forskjellige tredjepartsprodukter. Du bør undersøke hver løsning som passer best for dine forretningsbehov.

Hvis du ønsker å bygge din egen løsning som redigerer Office 97, Office 2000, Office XP og Office 2003 Binærfilformater direkte, kan du hente filen format spesifikasjoner gratis under vilkårene i Microsoft åpen Specification Promise (OSP). Ingen teknisk støtte er tilgjengelig for dokumentasjonen eller for produktene som du oppretter, men dokumentasjonen er tilgjengelig.

Serversideløsninger kan også tillate brukere å laste opp filer, og få serveren til å gjengi filene for visning på weben eller på andre medier. Microsoft arbeider for å tilby slike funksjoner, og inneholder en tidlig versjon av denne funksjonen i Microsoft Excel-tjenester.Excel-tjenester er en ny serverteknologi som er inkludert i Microsoft Office SharePoint Server 2007, og som gjør det mulig å laste inn, beregne og vise Excel-arbeidsbøker på Office SharePoint Server 2007. Hvis du vil ha mer informasjon om Excel-tjenester, kan du gå til følgende webområder for Microsoft Developer Network (MSDN):

Word Automation Services er et nytt tjenesteprogram i SharePoint Server 2010. Word Automation Services gir uovervåket, serversiden konvertering av dokumenter til formater som støttes av klientprogrammet Microsoft Word.Du trenger for å evaluere hvilke av alternativene som beskrives i denne artikkelen dekker dine behov, og hvordan de best kan distribuere din løsning. Informasjonen som denne artikkelen inneholder er ikke garantert å løse alle problemer for alle klienter. Du oppfordres til å teste løsningen grundig før du distribuerer løsningen.