Hostowanie w aplikacji usługi systemu Windows
Usługi systemu Windows (wcześniej znane jako usługi Systemu Windows NT) zapewniają model procesu szczególnie odpowiedni dla aplikacji, które muszą działać w długotrwałym pliku wykonywalnym i nie wyświetlają żadnej formy interfejsu użytkownika. Okres istnienia procesu aplikacji usługi systemu Windows jest zarządzany przez menedżera kontroli usług (SCM), który umożliwia uruchamianie, zatrzymywanie i wstrzymywanie aplikacji usługi systemu Windows. Proces usługi systemu Windows można skonfigurować tak, aby uruchamiał się automatycznie po uruchomieniu komputera, dzięki czemu jest to odpowiednie środowisko hostingu dla aplikacji "zawsze włączone". Aby uzyskać więcej informacji na temat aplikacji usług systemu Windows, zobacz Aplikacje usług systemu Windows.
Aplikacje hostujące długotrwałe usługi Windows Communication Foundation (WCF) mają wiele cech w usługach systemu Windows. W szczególności usługi WCF są długotrwałymi plikami wykonywalnymi serwera, które nie współdziałają bezpośrednio z użytkownikiem i dlatego nie implementują żadnej formy interfejsu użytkownika. W związku z tym hostowanie usług WCF wewnątrz aplikacji usługi systemu Windows jest jedną z opcji tworzenia niezawodnych, długotrwałych aplikacji WCF.
Często deweloperzy programu WCF muszą zdecydować, czy hostować swoją aplikację WCF wewnątrz aplikacji usługi systemu Windows, czy wewnątrz internetowych usług informacyjnych (IIS) lub środowiska hostingu usługi aktywacji procesów systemu Windows (WAS). Należy rozważyć użycie aplikacji usługi systemu Windows w następujących warunkach:
Aplikacja wymaga jawnej aktywacji. Na przykład należy używać usług systemu Windows, gdy aplikacja musi być uruchamiana automatycznie, gdy serwer uruchamia się zamiast dynamicznie uruchamiać się w odpowiedzi na pierwszy przychodzący komunikat.
Proces hostujący aplikację musi pozostać uruchomiony po uruchomieniu. Po uruchomieniu proces usługi systemu Windows pozostaje uruchomiony, chyba że jawnie zostanie zamknięty przez administratora serwera przy użyciu menedżera kontroli usługi. Aplikacje hostowane w usługach IIS lub WAS mogą być uruchamiane i zatrzymywane dynamicznie w celu optymalnego wykorzystania zasobów systemowych. Aplikacje, które wymagają jawnej kontroli nad okresem istnienia procesu hostingu, powinny używać usług systemu Windows zamiast usług IIS lub WAS.
Usługa WCF musi działać w systemie Windows Server 2003 i używać transportu innego niż HTTP. W systemie Windows Server 2003 środowisko hostingu usług IIS 6.0 jest ograniczone tylko do komunikacji HTTP. Aplikacje usług systemu Windows nie podlegają temu ograniczeniu i mogą korzystać z dowolnego obsługiwanego transportu WCF, w tym net.tcp, net.pipe i net.msmq.
Porady
Utwórz aplikację usługi systemu Windows. Aplikacje usług systemu Windows można pisać w kodzie zarządzanym przy użyciu klas w System.ServiceProcess przestrzeni nazw. Ta aplikacja musi zawierać jedną klasę dziedziczą z ServiceBaseklasy .
Połącz okres istnienia usług WCF z okresem istnienia aplikacji usługi systemu Windows. Zazwyczaj chcesz, aby usługi WCF hostowane w aplikacji usługi systemu Windows stały się aktywne po uruchomieniu usługi hostingu, zatrzymać nasłuchiwanie komunikatów po zatrzymaniu usługi hostingu i zamknąć proces hostingu, gdy usługa WCF napotka błąd. Można to zrobić w następujący sposób:
Zastąpij OnStart(String[]) , aby otworzyć co najmniej jedno wystąpienie klasy ServiceHost. Jedna aplikacja usługi systemu Windows może hostować wiele usług WCF, które są uruchamiane i zatrzymywane jako grupa.
Zastąp wywołanie OnStopClosedServiceHost wszystkich uruchomionych usług WCF, które zostały uruchomione podczas .OnStart(String[])
Zasubskrybuj Faulted zdarzenie ServiceHost i użyj ServiceController klasy , aby zamknąć aplikację usługi systemu Windows w przypadku błędu.
Aplikacje usług systemu Windows hostujące usługi WCF są wdrażane i zarządzane w taki sam sposób, jak aplikacje usług systemu Windows, które nie korzystają z usługi WCF.