Usługi hostingu

Aby stać się aktywna, usługa musi być hostowana w środowisku czasu wykonywania, które tworzy ją i kontroluje jej kontekst i okres istnienia. Usługi Windows Communication Foundation (WCF) są przeznaczone do uruchamiania w dowolnym procesie systemu Windows obsługującym kod zarządzany.

Program WCF udostępnia ujednolicony model programowania do tworzenia aplikacji zorientowanych na usługi. Ten model programowania pozostaje spójny i jest niezależny od środowiska uruchomieniowego, w którym jest wdrażana usługa. W praktyce oznacza to, że kod usług wygląda podobnie jak w przypadku opcji hostingu.

Te opcje hostingu wahają się od uruchamiania wewnątrz aplikacji konsolowej po środowiska serwera, takie jak usługa systemu Windows uruchomiona w procesie roboczym zarządzanym przez internetowe usługi informacyjne (IIS) lub przez usługę aktywacji procesów systemu Windows (WAS). Deweloperzy wybierają środowisko hostingu spełniające wymagania dotyczące wdrożenia usługi. Te wymagania mogą pochodzić z platformy, na której wdrożono aplikację, transportu, na którym musi wysyłać i odbierać komunikaty, lub na typ recyklingu procesów i inne zarządzanie procesami wymagane w celu zapewnienia odpowiedniej dostępności lub innych wymagań dotyczących zarządzania lub niezawodności. W następnej sekcji znajdują się informacje i wskazówki dotyczące opcji hostingu.

Opcje hostingu

Samodzielne hostowanie w aplikacji zarządzanej

Usługi WCF mogą być hostowane w dowolnej aplikacji zarządzanej. Jest to najbardziej elastyczna opcja, ponieważ wymaga najmniejszej infrastruktury do wdrożenia. Kod usługi można osadzić wewnątrz kodu aplikacji zarządzanej, a następnie utworzyć i otworzyć wystąpienie ServiceHost obiektu , aby udostępnić usługę. Aby uzyskać więcej informacji, zobacz Jak hostować usługę WCF w aplikacji zarządzanej.

Ta opcja umożliwia korzystanie z dwóch typowych scenariuszy: usługi WCF działające wewnątrz aplikacji konsolowych i rozbudowane aplikacje klienckie, takie jak oparte na windows Presentation Foundation (WPF) lub Windows Forms (WinForms). Hostowanie usługi WCF wewnątrz aplikacji konsolowej jest zwykle przydatne w fazie opracowywania aplikacji. Dzięki temu można łatwo debugować, łatwo uzyskać informacje o śledzeniu, aby dowiedzieć się, co dzieje się w aplikacji, i łatwo poruszać się, kopiując je do nowych lokalizacji. Ta opcja hostingu ułatwia również rozbudowane aplikacje klienckie, takie jak aplikacje WPF i WinForms, do komunikowania się ze światem zewnętrznym. Na przykład klient współpracy równorzędnej, który używa WPF dla interfejsu użytkownika, a także hostuje usługę WCF, która umożliwia innym klientom łączenie się z nim i udostępnianie informacji.

Zarządzane usługi systemu Windows

Ta opcja hostingu składa się z rejestrowania domeny aplikacji (AppDomain), która hostuje usługę WCF jako zarządzaną usługę systemu Windows (wcześniej znaną jako usługa NT), tak aby okres istnienia procesu usługi był kontrolowany przez menedżera kontroli usług (SCM) dla usług systemu Windows. Podobnie jak opcja samodzielnego hostingu, ten typ środowiska hostingu wymaga, aby część kodu hostingu została napisana jako część aplikacji. Usługa jest implementowana zarówno jako usługa systemu Windows, jak i jako usługa WCF, powodując dziedziczenie z ServiceBase klasy, a także z interfejsu kontraktu usługi WCF. Metoda ServiceHost jest następnie tworzona i otwierana w metodzie OnStart(String[]) przesłoniętej i zamknięta w ramach metody przesłoniętej OnStop() . Klasa instalatora dziedziczona z Installer programu musi być również zaimplementowana, aby umożliwić zainstalowanie programu jako usługa systemu Windows przez narzędzie Installutil.exe. Aby uzyskać więcej informacji, zobacz How to: Host a WCF Service in a Managed Windows Service (Instrukcje: hostowanie usługi WCF w usłudze zarządzanej systemu Windows). Scenariusz włączony przez opcję hostingu zarządzanej usługi systemu Windows jest taki, że długotrwała usługa WCF hostowana poza usługami IIS w bezpiecznym środowisku, które nie jest aktywowane komunikatami. Okres istnienia usługi jest kontrolowany przez system operacyjny. Ta opcja hostingu jest dostępna we wszystkich wersjach systemu Windows.

Internet Information Services (IIS)

Opcja hostingu usług IIS jest zintegrowana z ASP.NET i korzysta z funkcji oferowanych przez te technologie, takich jak odtwarzanie procesów, zamykanie bezczynności, monitorowanie kondycji procesów i aktywacja oparta na komunikatach. W systemach operacyjnych Windows XP i Windows Server 2003 jest to preferowane rozwiązanie do hostowania aplikacji usług sieci Web, które muszą być wysoce dostępne i wysoce skalowalne. Usługi IIS oferują również zintegrowaną możliwość zarządzania, których klienci oczekują od produktu serwera klasy korporacyjnej. Ta opcja hostingu wymaga prawidłowego skonfigurowania usług IIS, ale nie wymaga zapisania kodu hostingu w ramach aplikacji. Aby uzyskać więcej informacji na temat konfigurowania hostingu usług IIS dla usługi WCF, zobacz Instrukcje: hostowanie usługi WCF w usługach IIS.

Usługi hostowane przez usługi IIS mogą używać tylko transportu HTTP. Jego implementacja w usługach IIS 5.1 wprowadziła pewne ograniczenia w systemie Windows XP. Aktywacja oparta na komunikatach udostępniona dla usługi WCF przez usługi IIS 5.1 w systemie Windows XP blokuje wszystkie inne własne usługi WCF na tym samym komputerze z użyciem portu 80 do komunikacji. Usługi WCF mogą działać w tym samym procesie AppDomain/Application Pool/Worker co inne aplikacje hostowane przez usługi IIS 6.0 w systemie Windows Server 2003. Jednak ponieważ zarówno WCF, jak i IIS 6.0 używają stosu HTTP trybu jądra (HTTP.sys), usługi IIS 6.0 mogą współużytkować port 80 z innymi własnymi usługami WCF działającymi na tym samym komputerze, w przeciwieństwie do usług IIS 5.1.

Usługa aktywacji procesów systemu Windows (WAS)

Usługa aktywacji procesów systemu Windows (WAS) to nowy mechanizm aktywacji procesów dla systemu Windows Server 2008, który jest również dostępny w systemie Windows Vista. Zachowuje on znany model procesów usług IIS 6.0 (pule aplikacji i aktywację procesów opartych na komunikatach) i funkcje hostingu (takie jak szybka ochrona przed awariami, monitorowanie kondycji i recykling), ale usuwa zależność od protokołu HTTP z architektury aktywacji. Usługi IIS 7.0 używają usługi WAS do przeprowadzenia aktywacji opartej na komunikatach za pośrednictwem protokołu HTTP. Dodatkowe składniki programu WCF również podłączają program WAS, aby zapewnić aktywację opartą na komunikatach za pośrednictwem innych protokołów, które obsługuje program WCF, takich jak TCP, MSMQ i nazwane potoki. Umożliwia to aplikacjom korzystającym z protokołów komunikacyjnych korzystanie z funkcji usług IIS, takich jak odtwarzanie procesów, szybka ochrona po awarii i wspólny system konfiguracji, który był dostępny tylko dla aplikacji opartych na protokole HTTP.

Ta opcja hostingu wymaga prawidłowego skonfigurowania funkcji WAS, ale nie wymaga pisania żadnego kodu hostingu w ramach aplikacji. Aby uzyskać więcej informacji na temat konfigurowania hostingu WAS, zobacz How to: Host a WCF Service in WAS (Jak hostować usługę WCF w programie WAS).

Wybieranie środowiska hostingu

Poniższa tabela zawiera podsumowanie niektórych kluczowych korzyści i scenariuszy skojarzonych z poszczególnymi opcjami hostingu.

Środowisko hostingu Typowe scenariusze Najważniejsze korzyści i ograniczenia
Aplikacja zarządzana ("self-hosted") — Aplikacje konsolowe używane podczas programowania.
— Rozbudowane aplikacje klienckie WinForm i WPF, które uzyskują dostęp do usług.
-Elastyczne.
- Łatwe do wdrożenia.
— Nie jest rozwiązaniem dla przedsiębiorstw dla usług.
Usługi systemu Windows (wcześniej znane jako usługi NT) — Długotrwała usługa WCF hostowana poza usługami IIS. — Okres istnienia procesu usługi kontrolowany przez system operacyjny, a nie aktywowany komunikat.
— Obsługiwane przez wszystkie wersje systemu Windows.
- Bezpieczne środowisko.
IIS 5.1, IIS 6.0 — Uruchamianie usługi WCF obok ASP.NET zawartości w Internecie przy użyciu protokołu HTTP. - Recykling procesów.
- Bezczynne zamykanie.
- Monitorowanie kondycji procesu.
- Aktywacja oparta na komunikatach.
- Tylko HTTP.
Usługa aktywacji procesów systemu Windows (WAS) — Uruchamianie usługi WCF bez instalowania usług IIS w Internecie przy użyciu różnych protokołów transportowych. — Usługi IIS nie są wymagane.
- Recykling procesów.
- Bezczynne zamykanie.
- Monitorowanie kondycji procesu.
- Aktywacja oparta na komunikatach.
— Działa z protokołem HTTP, TCP, nazwanymi potokami i msMQ.
IIS 7.0 — Uruchamianie usługi WCF z zawartością ASP.NET.
- Uruchamianie usługi WCF w Internecie przy użyciu różnych protokołów transportowych.
- KORZYŚCI WAS.
— Zintegrowane z zawartością ASP.NET i usługAMI IIS.

Wybór środowiska hostingu zależy od wersji systemu Windows, od której jest wdrożona, transporty wymagane do wysyłania komunikatów oraz typu procesu i wymaganego recyklingu domeny aplikacji. Poniższa tabela zawiera podsumowanie danych związanych z tymi wymaganiami.

Środowisko hostingu Dostępność platformy Obsługiwane transporty Przetwarzanie i odtwarzanie domeny aplikacji
Aplikacje zarządzane ("self-hosted") Windows XP, Windows Server 2003, Windows Vista,

Windows Server 2008
HTTP,

Net.tcp

Net.pipe

Net.msmq
Nie.
Usługi systemu Windows (wcześniej znane jako usługi NT) Windows XP, Windows Server 2003, Windows Vista,

Windows Server 2008
HTTP,

Net.tcp

Net.pipe

Net.msmq
Nie.
USŁUGI IIS 5.1 Windows XP HTTP Tak
IIS 6,0 Windows Server 2003 HTTP Tak
Usługa aktywacji procesów systemu Windows (WAS) Windows Vista, Windows Server 2008 HTTP,

Net.tcp

Net.pipe

Net.msmq
Tak

Należy pamiętać, że uruchomienie usługi lub dowolnego rozszerzenia z niezaufanego hosta narusza bezpieczeństwo. Ponadto podczas otwierania ServiceHost podszywania się pod personifikację aplikacja musi upewnić się, że użytkownik nie jest wylogowany, na przykład przez buforowanie WindowsIdentity użytkownika.

Zobacz też