Udostępnij za pośrednictwem


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:

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 na true, OnPause można wywołać metody i OnContinue . Po ustawieniu jednej z tych właściwości na truewartość należy zastąpić i zdefiniować przetwarzanie dla skojarzonych metod.

    Uwaga

    Usługa musi przesłonić co najmniej OnStart i OnStop być przydatna.

Możesz również użyć składnika o nazwie , ServiceController aby komunikować się z istniejącą usługą i kontrolować jej zachowanie.

Zobacz też