Udostępnij za pośrednictwem


Architektura programowania aplikacji usług

Uwaga / Notatka

Ten artykuł nie dotyczy hostowanych usług na platformie .NET. Aby uzyskać najnowszą zawartość dotyczącą usług systemu Windows przy użyciu Microsoft.Extensions.Hosting.BackgroundService i szablonu usługi roboczej, zobacz:

Aplikacje usług Windows są oparte na klasie, która dziedziczy po klasie System.ServiceProcess.ServiceBase. Zastępujesz metody z tej klasy i definiujesz dla nich funkcjonalność, aby określić, jak działa Twoja usługa.

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.

Metoda 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 / Notatka

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 klasie ServiceBase. 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 / Notatka

    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ć na Twojej usłudze. Na przykład, gdy właściwość CanStop jest ustawiona na true, można wywołać metodę OnStop w Twojej usłudze. Gdy właściwość CanPauseAndContinue jest ustawiona na true, można wywołać metody OnPause i OnContinue. Po ustawieniu jednej z tych właściwości na true, należy nadpisać i zdefiniować przetwarzanie dla skojarzonych metod.

    Uwaga / Notatka

    Aby usługa była przydatna, musi przesłonić co najmniej OnStart i OnStop.

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

Zobacz także