Wprowadzenie do aplikacji usług systemu Windows

Ostrzeżenie

Ta dokumentacja nie dotyczy najnowszej wersji usługi Windows Service. Aby uzyskać najnowszą zawartość na temat Windows services using BackgroundService i szablonu usługi procesu roboczego, zobacz:

Usługi Windows Microsoft, znane wcześniej jako usługi NT, umożliwiają tworzenie długotrwałych aplikacji wykonywalnych uruchamianych we własnych sesjach Windows plików. Te usługi można uruchamiać automatycznie podczas uruchamiania komputera, można je wstrzymać i ponownie uruchomić i nie wyświetlać żadnego interfejsu użytkownika. Te funkcje sprawiają, że usługi idealnie nadają się do użycia na serwerze lub gdy potrzebujesz długotrwałych funkcji, które nie zakłócają pracy innych użytkowników pracujących na tym samym komputerze. Usługi można również uruchamiać w kontekście zabezpieczeń określonego konta użytkownika, które różni się od zalogowanego użytkownika lub domyślnego konta komputera. Aby uzyskać więcej informacji na temat usług i sesji Windows, zobacz dokumentację Windows SDK.

Usługi można łatwo tworzyć, tworząc aplikację zainstalowaną jako usługa. Załóżmy na przykład, że chcesz monitorować dane licznika wydajności i reagować na wartości progowe. Możesz napisać aplikację usługi Windows Service, która nasłuchuje danych licznika wydajności, wdraża aplikację oraz rozpoczyna zbieranie i analizowanie danych.

Usługa jest tworzyć jako Microsoft Visual Studio projektu, definiując w nim kod określający, jakie polecenia mogą być wysyłane do usługi i jakie akcje należy podjąć po otrzymaniu tych poleceń. Polecenia, które mogą być wysyłane do usługi, obejmują uruchamianie, wstrzymywanie, wznawianie i zatrzymywanie usługi; Można również wykonywać polecenia niestandardowe.

Po utworzeniu i skompilowaniu aplikacji można ją zainstalować, uruchamiając narzędzie wiersza polecenia InstallUtil.exe przekazując ścieżkę do pliku wykonywalnego usługi. Następnie możesz użyć Menedżera sterowania usługami, aby uruchomić, zatrzymać, wstrzymać, wznowić i skonfigurować usługę. Można również wykonać wiele z tych samych zadań w węźle Usługi w Eksplorator serwera lub przy użyciu klasy ServiceController .

Aplikacje usług a inne Visual Studio aplikacji

Aplikacje usług działają inaczej niż wiele innych typów projektów na kilka sposobów:

  • Skompilowany plik wykonywalny, który tworzy projekt aplikacji usługi, musi zostać zainstalowany na serwerze, aby projekt działał w zrozumiały sposób. Nie można debugować ani uruchamiać aplikacji usługi przez naciśnięcie klawiszy F5 lub F11; Nie można natychmiast uruchomić usługi ani krok do jej kodu. Zamiast tego należy zainstalować i uruchomić usługę, a następnie dołączyć debuger do procesu usługi. Aby uzyskać więcej informacji, zobacz How to: Debug Windows Service Applications.

  • W przeciwieństwie do niektórych typów projektów należy utworzyć składniki instalacyjne dla aplikacji usług. Składniki instalacji instalują i rejestrują usługę na serwerze oraz tworzą wpis dla usługi za pomocą menedżera kontroli Windows Services. Aby uzyskać więcej informacji, zobacz How to: Add Installers to Your Service Application(Jak dodać instalatory do aplikacji usługi).

  • Metoda Main aplikacji usługi musi wydać polecenie Uruchom dla usług, które zawiera projekt. Metoda Run ładuje usługi do Menedżera kontroli usług na odpowiednim serwerze. Jeśli używasz szablonu projektu Windows Services, ta metoda jest napisana automatycznie. Należy pamiętać, że ładowanie usługi to nie to samo, co uruchamianie usługi. Zobacz "Okres istnienia usługi" poniżej, aby uzyskać więcej informacji.

  • Windows Aplikacje usług działają na innej stacji okna niż interaktywna stacja zalogowanego użytkownika. Stacja okna to bezpieczny obiekt, który zawiera schowek, zestaw atomów globalnych i grupę obiektów pulpitu. Ponieważ stacja usługi Windows nie jest interakcyjną stacją, okna dialogowe wywoływane z poziomu aplikacji usługi Windows nie będą widoczne i mogą spowodować, że program przestanie odpowiadać. Podobnie komunikaty o błędach powinny być rejestrowane w Windows zdarzeń, a nie w interfejsie użytkownika.

    Klasy Windows usługi obsługiwane przez .NET Framework nie obsługują interakcji ze stacjami interaktywnymi, czyli zalogowanym użytkownikiem. Klasa .NET Framework również nie zawiera klas reprezentujących stacje i komputery stacjonarne. Jeśli twoja Windows musi współdziałać z innymi stacjami, musisz uzyskać dostęp do niezaimażowanego interfejsu API Windows API. Aby uzyskać więcej informacji, zobacz dokumentację Windows SDK.

    Interakcja usługi Windows z użytkownikiem lub innymi stacjami musi być starannie zaprojektowana tak, aby uwzględniała scenariusze, takie jak brak zalogowanego użytkownika lub nieoczekiwany zestaw obiektów pulpitu. W niektórych przypadkach bardziej odpowiednie może być napisanie aplikacji Windows, która działa pod kontrolą użytkownika.

  • Windows usługi działają we własnym kontekście zabezpieczeń i są uruchamiane, zanim użytkownik zaloguje się Windows komputerze, na którym są zainstalowane. Należy dokładnie zaplanować konto użytkownika, w ramach których ma być uruchamiana usługa. Usługa uruchomiona na koncie systemowym ma więcej uprawnień niż konto użytkownika.

Okres istnienia usługi

Usługa przechodzi przez kilka stanów wewnętrznych w okresie istnienia. Najpierw usługa jest instalowana w systemie, w którym będzie działać. Ten proces wykonuje instalatory projektu usługi i ładuje usługę do Menedżera sterowania usługami dla tego komputera. Menedżer sterowania usługami to centralne narzędzie udostępniane przez Windows do administrowania usługami.

Po załadowaniu usługi należy ją rozpocząć. Uruchomienie usługi umożliwia jej rozpoczęcie działania. Usługę można uruchomić za pomocą Menedżera sterowania usługami, z Eksplorator serwera , lub z kodu, wywołując metodę Start . Metoda przekazuje przetwarzanie do metody aplikacji i przetwarza dowolny kod zdefiniowany Start OnStart w tym miejscu.

Uruchomiona usługa może istnieć w tym stanie przez czas nieokreślony, dopóki nie zostanie zatrzymana lub wstrzymana albo dopóki komputer nie zostanie zamknięty. Usługa może istnieć w jednym z trzech podstawowych stanów: Running Paused , lub Stopped . Usługa może również zgłaszać stan oczekującego polecenia: ContinuePending PausePending , , lub StartPending StopPending . Te stany wskazują, że polecenie zostało wydane, na przykład polecenie wstrzymania uruchomionej usługi, ale nie zostało jeszcze wykonane. Możesz wykonać zapytanie w celu ustalenia, w jakim stanie znajduje się usługa, lub użyć funkcji , aby wykonać akcję, gdy Status WaitForStatus wystąpi którykolwiek z tych stanów.

Usługę można wstrzymać, zatrzymać lub wznowić za pomocą Menedżera sterowania usługami, Eksplorator serwera , lub wywołując metody w kodzie. Każda z tych akcji może wywołać skojarzoną procedurę w usłudze ( , lub ), w której można zdefiniować dodatkowe przetwarzanie do wykonania po OnStop OnPause zmianie stanu OnContinue usługi.

Typy usług

Istnieją dwa typy usług, które można utworzyć w Visual Studio użyciu .NET Framework. Usługi, które są jedyną usługą w procesie, mają przypisany typ Win32OwnProcess . Usługi, które współużytkują proces z inną usługą, mają przypisany typ Win32ShareProcess . Typ usługi można pobrać, odpytując właściwość ServiceType .

W przypadku wykonywania zapytań o istniejące usługi, które nie zostały utworzone w Visual Studio, mogą czasami pojawić się inne Visual Studio. Aby uzyskać więcej informacji na ich temat, zobacz ServiceType .

Usługi i składnik ServiceController

Składnik jest używany do nawiązywania połączenia z zainstalowaną usługą i manipulowania jego stanem. Za pomocą składnika można uruchomić i zatrzymać usługę, wstrzymać i kontynuować jej działanie oraz wysyłać polecenia niestandardowe do ServiceController ServiceController usługi. Nie trzeba jednak używać składnika ServiceController podczas tworzenia aplikacji usługi. W większości przypadków składnik powinien istnieć w oddzielnej aplikacji niż aplikacja usługi Windows, która ServiceController definiuje usługę.

Aby uzyskać więcej informacji, zobacz ServiceController.

Wymagania

  • Usługi muszą być tworzone w projekcie aplikacji usługi Windows Service lub innym projekcie z włączoną obsługą .NET Framework, który tworzy plik .exe podczas tworzenia i dziedziczy z ServiceBase klasy .

  • Projekty zawierające Windows muszą mieć składniki instalacyjne projektu i jego usług. Można to łatwo zrobić w oknie Właściwości. Aby uzyskać więcej informacji, zobacz How to: Add Installers to Your Service Application(Jak dodać instalatory do aplikacji usługi).

Zobacz też