Architektura programowania aplikacji usług
Uwaga
Ten artykuł nie dotyczy hostowanych usług na platformie .NET. Aby uzyskać najnowszą zawartość w usługach systemu Windows przy użyciu Microsoft.Extensions.Hosting.BackgroundService i szablonie usługi procesu roboczego, zobacz:
Aplikacje usługi systemu Windows są oparte na klasie dziedziczonej System.ServiceProcess.ServiceBase po klasie. Metody z tej klasy są zastępowane i definiowanie dla nich funkcji w celu określenia sposobu działania usługi.
Główne klasy związane z tworzeniem usługi to:
System.ServiceProcess.ServiceBase — Metody z ServiceBase klasy są zastępowane podczas tworzenia usługi i definiowania kodu w celu określenia sposobu działania usługi w tej dziedziczonej klasie.
System.ServiceProcess.ServiceProcessInstaller i System.ServiceProcess.ServiceInstaller — te klasy służą do instalowania i odinstalowywania usługi.
Ponadto klasę o nazwie ServiceController można użyć do manipulowania samą usługą. Ta klasa nie jest zaangażowana w tworzenie usługi, ale może służyć do uruchamiania i zatrzymywania usługi, przekazywania do niej poleceń i zwracania serii wyliczenia.
Definiowanie zachowania usługi
W klasie usługi zastąpisz funkcje klasy bazowej, które określają, co się stanie, gdy stan usługi zostanie zmieniony w Menedżerze kontroli usług. Klasa ServiceBase uwidacznia następujące metody, które można zastąpić, aby dodać zachowanie niestandardowe.
Method | Zastąpij do |
---|---|
OnStart | Określ, jakie akcje należy wykonać po uruchomieniu usługi. Aby usługa wykonała przydatną pracę, musisz napisać kod w tej procedurze. |
OnPause | Wskaż, co powinno się zdarzyć po wstrzymaniu usługi. |
OnStop | Określ, co powinno się zdarzyć, gdy usługa przestanie działać. |
OnContinue | Wskaż, co powinno się zdarzyć, gdy usługa wznowi normalne działanie po wstrzymaniu. |
OnShutdown | Wskaż, co powinno się zdarzyć tuż przed zamknięciem systemu, jeśli usługa jest uruchomiona w tym czasie. |
OnCustomCommand | Wskaż, co powinno się zdarzyć, gdy usługa otrzyma polecenie niestandardowe. Aby uzyskać więcej informacji na temat poleceń niestandardowych, zobacz MSDN online. |
OnPowerEvent | Określ, jak usługa powinna reagować po odebraniu zdarzenia zarządzania energią, takiego jak niska bateria lub zawieszona operacja. |
Uwaga
Te metody reprezentują stany, przez które usługa przechodzi w okresie jego istnienia; usługa przechodzi z jednego stanu do następnego. Na przykład usługa nigdy nie otrzyma odpowiedzi na OnContinue polecenie, zanim OnStart zostanie wywołana.
Istnieje kilka innych właściwości i metod, które są interesujące. Są to:
Metoda Run w ServiceBase klasie . Jest to główny punkt wejścia dla usługi. Podczas tworzenia usługi przy użyciu szablonu usługi systemu Windows kod jest wstawiany w metodzie aplikacji
Main
w celu uruchomienia usługi. Ten kod wygląda następująco:ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new Service1() }; Run(ServicesToRun);
Dim ServicesToRun() As System.ServiceProcess.ServiceBase ServicesToRun = New System.ServiceProcess.ServiceBase() {New Service1()} System.ServiceProcess.ServiceBase.Run(ServicesToRun)
Uwaga
W tych przykładach użyto tablicy typu ServiceBase, w której można dodać każdą usługę, którą zawiera aplikacja, a następnie wszystkie usługi można uruchamiać razem. Jeśli tworzysz tylko jedną usługę, możesz jednak zrezygnować z używania tablicy i po prostu zadeklarować nowy obiekt dziedziczący z ServiceBase , a następnie uruchomić go. Aby zapoznać się z przykładem, zobacz Jak programowo pisać usługi.
Seria właściwości klasy ServiceBase . Określają one, jakie metody można wywołać w usłudze. Na przykład gdy CanStop właściwość jest ustawiona na
true
, można wywołać metodę OnStop w usłudze. Gdy właściwość jest ustawiona CanPauseAndContinue natrue
, OnPause można wywołać metody i OnContinue . Po ustawieniu jednej z tych właściwości natrue
wartość należy zastąpić i zdefiniować przetwarzanie dla skojarzonych metod.
Możesz również użyć składnika o nazwie , ServiceController aby komunikować się z istniejącą usługą i kontrolować jej zachowanie.