Niedawno zrobiłem internetowy projekt grupowania prac. Główne funkcje obejmują składanie tekstu, przegląd i generowanie prac testowych. Jeśli chodzi o operacje słowne na początku, jedną z rzeczy, które przychodzą na myśl, jest komponent office COM do obsługi worda. Napisanie kodu dla całego systemu zajęło około dwóch tygodni. Potem zacząłem powtarzać testy, czułem się dobrze lokalnie, udało mi się płynnie wygenerować test tekstowy, a wyniki były w porządku. Nie mogłem się doczekać, żeby wypuścić ją na serwerze.
Pierwszy to awaria komponentu z CLSID {000209FF-0000-0000-C000-0000000046} w fabryce COM z powodu następującego błędu: 8000401a System nie może uruchomić procesu serwera, ponieważ ID konfiguracji jest nieprawidłowe. Proszę sprawdzić nazwę użytkownika i hasło. (Wyjątek od HRESULT:0x8000401A).
Po pierwsze, wszystkie te problemy są spowodowane uprawnieniami, a rozwiązaniem jest po prostu ich skonfigurowanie. Przydatne nie tylko w Excelu i Wordzie, ale także we wszystkich produktach Office.
Aby przejść do sedna, najpierw wpisz dcomcnfg w run, otwórz menedżera usług komponentów->component service->my computer->DCOM-> znajdź odpowiedni dokument Microsoft Excel applicotion/Microsoft Word 97-2003, a następnie kliknij prawym przyciskiem myszy na atrybut, aby aktywować uprawnienia do uruchamiania, co wystarczy, by nadać OK. -------- nie ma problemu, ten problem został rozwiązany.
Porozmawiajmy o drugiej sytuacji "Problem wydajności": Ponieważ nasz system jest kolejnym podsystemem naszej strony internetowej. Więc istnieje pewna baza użytkowników. System był dostępny przez dużą liczbę użytkowników zaraz po uruchomieniu. Na początku codziennie grupowano czterysta lub pięćset gazet, a stopniowo liczba gazet rosła, co było początkiem problemów z systemem. Pierwszy to to, że w procesie jest wiele winWord.exe procesów. To nie może się skończyć. Chociaż kod systemowy zawiera proces Quit i recyklinguje zasoby, problem nigdy nie zostaje rozwiązany. Konsekwencją dużej liczby winword.exe procesów jest spowolnienie serwera. Dla tego komponentu powinno to być szczególnie wymagające pamięci.
Nie ma sposobu, by rozwiązać ten problem. Ostatnim złodziejem było napisanie usługi czasowej, która zabijała proces winword, który nie działał. To leczy objawy, ale nie przyczynę źródłową. 、
Chcę tu powiedzieć, że Microsoft Office to aplikacja biurowa na pulpicie, głównie stworzona dla zwykłych użytkowników, posiada bogate elementy interfejsu użytkownika i jest zestawem czysto lokalnego oprogramowania działającego lub klienckiego. Interfejs automatyzacji Word został zaprojektowany przede wszystkim do ułatwiania wywołań aplikacji okienkowych. Na przykład aplikacje natywne tworzone przez Delphi, VB, C# Winform itd. Chociaż można wymusić Visible, by był fałszywy, a Word może działać w kodzie po stronie serwera, nadal niesie to wiele trudniejszych problemów.
1. ASP.NET opiera się na architekturze B/S. W architekturze B/S dostęp użytkowników odbywa się równocześnie, co oznacza, że N użytkowników często wysyła żądania do strony serwera jednocześnie. W takim przypadku automatyczne wywołanie Word często czasem przestaje działać.
2. Z powodu operacji ukrytego interfejsu, niektóre interfejsy zawierające interfejsy, które można pomyślnie wywołać w programie okiennym, nie wywołują po stronie serwera lub nawet ulegają awarii, co często prowadzi do martwych procesów.
3. Ponieważ Word jest złożonym programem desktopowym i nie spełnia standardów ogólnych programów usług sieciowych pod względem prostoty i efektywności, działa wolno po stronie serwera i zużywa dużo zasobów (CPU, pamięci), zwłaszcza nie może jednocześnie obsługiwać dużej liczby użytkowników, a zasoby szybko się wyczerpują.
4. Większość programistów jest stosunkowo nieobeznana z technologią COM, a podczas programowania i wywoływania interfejsu Word często występują błędy kodowe, co utrudnia sprawdzenie problemu, co jest częstym czynnikiem powodującym martwe procesy. Procesy martwe w Wordzie nie tylko zużywają zasoby serwera, ale często powodują, że strony serwera nie mogą tworzyć nowych obiektów automatyzacji Word i nie działać dalej. Niektórzy internauci zaproponowali rozwiązanie martwego procesu: programowanie zabijające martwy proces Worda, czyli praktykę leczenia objawów, ale nie przyczyny źródłowej; martwy proces Word znika, ale nienormalne zamknięcie Worda spowoduje, że wiele zasobów nie będzie uwolnionych na czas. Jak długo taki serwer WWW będzie działał, trudno powiedzieć.
Aby rozwiązać te problemy, po gruntownych badaniach i porównaniach autor odkrył, że w Internecie istnieje komponent aspose.words, który całkowicie eliminuje powyższe problemy i jest zalecany do udostępnienia z Tobą.
Poniżej podzielę się z Wami częścią kodu operacyjnego komponentu aspose.words, mając nadzieję, że będzie pomocny dla tych, którzy go potrzebują
Oryginalny link: http://blog.csdn.net/fraing/article/details/8989736
|