Äskettäin tein verkkopohjaisen paperiryhmittelyprojektin. Päätehtävät ovat sanojen ladonta, esikatselu ja koepapereiden laatiminen. Kun puhutaan Word-operaatioista alussa, yksi asia, joka tulee mieleen, on Office COM -komponentti Wordin operointiin. Koko järjestelmän koodin kirjoittaminen kesti noin kaksi viikkoa. Sitten aloin testata toistuvasti, ja paikallisesti tunsin oloni hyväksi, ja pystyin tekemään sanatestipaperin sujuvasti, ja suorituskyky oli kohtuullinen. En malttanut odottaa, että pääsen julkaisemaan sen palvelimelle.
Ensimmäinen on, että komponentti, jonka COM-tehtaassa on CLSID {000209FF-0000-0000-C000-0000000046}, vikaantuu seuraavan virheen vuoksi: 8000401a Järjestelmä ei voi käynnistää palvelinprosessia, koska konfiguraatio-ID on virheellinen. Tarkistathan käyttäjätunnuksen ja salasanan. (Poikkeus HRESULT:0x8000401A).
Ensinnäkin kaikki nämä ongelmat johtuvat käyttöoikeuksista, ja ratkaisu on vain käyttöoikeuksien konfigurointi. Hyödyllinen ei vain Excelissä ja Wordissa, vaan myös kaikissa Office-tuotteissa.
Päästäkseni asiaan, kirjoita ensin dcomcnfg juoksuun, avaa component service manager->component service->my computer->DCOM-> etsi vastaava Microsoft Excel Applicotion/Microsoft Word 97-2003 -dokumentti, ja sitten napsauta hiiren oikealla painiketta aktivoidaksesi käynnistysoikeuden riittää antamaan sen OK:lle. -------- ei ongelmaa, tämä ongelma ratkeaa.
Puhutaanpa toisesta tilanteesta "Suorituskykyongelma": Koska järjestelmämme on verkkosivustomme seuraava alijärjestelmä. Joten käyttäjäkunta on tietty. Järjestelmään pääsi käyttöön suuri määrä käyttäjiä heti sen tultua. Aluksi päivittäin ryhmiteltiin neljä tai viisisataa artikkelia, ja vähitellen lehtimäärä kasvoi, mikä oli järjestelmän ongelmien alku. Ensimmäinen on, että prosessissa on monia winWord.exe prosesseja. Se ei voi loppua. Vaikka järjestelmäkoodi sisältää Quit-prosessin ja kierrättää resursseja, ongelmaa ei koskaan ratkaista. Monien winword.exe-prosessien seurauksena palvelin hidastuu. Tämän komponentin pitäisi olla erityisen muistia kuluttava.
Ongelmaa ei voi ratkaista. Viimeinen roisto oli kirjoittaa ajoituspalvelu, joka tappoi winword-prosessin, joka ei ollut käynnissä. Tämä hoitaa oireet, mutta ei juurisyytä. 、
Tässä haluan sanoa, että Microsoft Office on työpöytäsovellusohjelmisto, joka on pääasiassa kehitetty tavallisille käyttäjille, siinä on rikkaat käyttöliittymäelementit (käyttöliittymä) ja se on joukko puhtaasti paikallisesti pyörivää ohjelmistoa tai asiakasohjelmistoa. Word-automaatiorajapinta on ensisijaisesti suunniteltu helpottamaan ikkunasovelluskutsuja. Esimerkiksi Delphi, VB, C# Winform jne. kehittämät natiivisovellukset. Vaikka on mahdollista pakottaa Visible olemaan väärä ja Word voi ajaa palvelinpuolen koodissa, se tuo silti mukanaan monia hankalia ongelmia.
1. ASP.NET perustuu B/S-arkkitehtuuriin. B/S-arkkitehtuurissa käyttäjän pääsy tapahtuu samanaikaisesti, mikä tarkoittaa, että N käyttäjää tekee usein pyyntöjä palvelinsivulle samanaikaisesti. Tässä tapauksessa Word-automaatiokutsu usein lakkaa ajoittain.
2. Piilotetun käyttöliittymän toiminnan vuoksi jotkut rajapinnat, joissa on rajapinnat, jotka voidaan kutsua onnistuneesti ikkunaohjelmassa, epäonnistuvat palvelinpuolella kutsumisessa tai jopa kaatuvat, mikä usein johtaa prosessien kuolleisiin.
3. Koska Word on monimutkainen työpöytäohjelma eikä täytä yleisten verkkopalveluohjelmien vaatimuksia yksinkertaisuuden ja tehokkuuden osalta, se toimii palvelinpuolella hitaasti, ja se kuluttaa paljon resursseja (CPU, muisti), erityisesti se ei pysty tukemaan suurta käyttäjämäärää samanaikaisesti, ja resurssit kuluvat nopeasti.
4. Useimmat kehittäjät eivät tunne COM-teknologiaa, ja ohjelmoinnissa ja Word-käyttöliittymän kutsussa esiintyy usein koodivirheitä, ja ongelman tarkistaminen on vaikeaa, sillä se on yleinen tekijä, joka aiheuttaa kuolleita prosesseja. Wordin kuolleet prosessit eivät ainoastaan kuluta palvelinresursseja, vaan usein myös aiheuttavat palvelinsivujen epäonnistumisen uusien Word-automaatioobjektien luomisessa ja niiden toiminnan jatkumisessa. Jotkut nettikäyttäjät ehdottivat kuollutta prosessiratkaisua: ohjelmointia, joka tappaa Wordin kuollut prosessi, joka on käytäntö, jossa hoidetaan oireita mutta ei juurisyytä, Wordin kuollut prosessi on poissa, mutta Wordin epänormaali sulkeutuminen estää monia resursseja julkaisemasta ajoissa. Kuinka kauan tällainen verkkopalvelin kestää, on vaikea sanoa.
Näiden ongelmien ratkaisemiseksi kattavan tutkimuksen ja vertailun jälkeen kirjoittaja havaitsi, että internetissä on komponentti aspose.words, joka poistaa yllä mainitut ongelmat kokonaan ja on suositeltavaa jakaa kanssasi.
Alla jaan kanssasi osan aspose.words-komponentin toimintakoodista toivoen, että siitä olisi apua niille, jotka sitä tarvitsevat
Alkuperäinen linkki: http://blog.csdn.net/fraing/article/details/8989736
|