Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Um aktiv zu werden, muss ein Dienst in einer Laufzeitumgebung gehostet werden, die ihn erstellt und den Kontext und die Lebensdauer steuert. Windows Communication Foundation (WCF)-Dienste sind so konzipiert, dass sie in jedem Windows-Prozess ausgeführt werden, der verwalteten Code unterstützt.
WCF stellt ein einheitliches Programmiermodell zum Erstellen dienstorientierter Anwendungen bereit. Dieses Programmiermodell bleibt konsistent und unabhängig von der Laufzeitumgebung, in der der Dienst bereitgestellt wird. In der Praxis bedeutet dies, dass der Code für Ihre Dienste ähnlich aussieht, was auch immer die Hostingoption ist.
Diese Hostingoptionen reichen von der Ausführung innerhalb einer Konsolenanwendung bis hin zu Serverumgebungen wie einem Windows-Dienst, der in einem von Internetinformationsdienste (INTERNET Information Services, IIS) verwalteten Arbeitsprozess oder vom Windows-Prozessaktivierungsdienst (WAS) ausgeführt wird. Entwickler wählen die Hostingumgebung aus, die den Bereitstellungsanforderungen des Diensts entspricht. Diese Anforderungen können von der Plattform abgeleitet werden, auf der die Anwendung bereitgestellt wird, den Transport, auf dem sie Nachrichten senden und empfangen muss, oder auf der Art des Prozessrecyclings und anderer Prozessverwaltungen, die erforderlich sind, um eine angemessene Verfügbarkeit oder andere Verwaltungs- oder Zuverlässigkeitsanforderungen sicherzustellen. Der nächste Abschnitt enthält Informationen und Anleitungen zu Hostingoptionen.
Hostingoptionen
Self-Host in einer verwalteten Anwendung
WCF-Dienste können in jeder verwalteten Anwendung gehostet werden. Dies ist die flexibelste Option, da für die Bereitstellung die geringste Infrastruktur erforderlich ist. Sie betten den Code für den Dienst in den Code der verwalteten Anwendung ein und erstellen und öffnen dann eine Instanz des ServiceHost Diensts, um den Dienst verfügbar zu machen. Weitere Informationen finden Sie unter How to: Host a WCF Service in a Managed Application.
Diese Option ermöglicht zwei häufige Szenarien: WCF-Dienste, die in Konsolenanwendungen ausgeführt werden, und Rich-Client-Anwendungen, z. B. solche, die auf Windows Presentation Foundation (WPF) oder Windows Forms (WinForms) basieren. Das Hosten eines WCF-Diensts innerhalb einer Konsolenanwendung ist in der Regel während der Entwicklungsphase der Anwendung hilfreich. Das erleichtert das Debuggen, das Abrufen von Ablaufverfolgungsinformationen, um herauszufinden, was innerhalb der Anwendung geschieht, und das Verschieben, indem man sie an neue Speicherorte kopiert. Diese Hostingoption erleichtert auch die Kommunikation von Rich-Client-Anwendungen wie WPF- und WinForms-Anwendungen mit der Außenwelt. Beispielsweise ein Peer-to-Peer-Zusammenarbeitsclient, der WPF für die Benutzeroberfläche verwendet und auch einen WCF-Dienst hostt, der es anderen Clients ermöglicht, eine Verbindung mit ihm herzustellen und Informationen freizugeben.
Verwaltete Windows-Dienste
Diese Hostingoption besteht aus der Registrierung der Anwendungsdomäne (AppDomain), die einen WCF-Dienst als verwalteten Windows-Dienst (früher nt-Dienst genannt) hosten, sodass die Prozesslebensdauer des Diensts vom Dienststeuerungs-Manager (SCM) für Windows-Dienste gesteuert wird. Wie bei der Self-Hosting-Option erfordert diese Art von Hostingumgebung, dass einige Hostingcode als Teil der Anwendung geschrieben werden. Der Dienst wird sowohl als Windows-Dienst als auch als WCF-Dienst implementiert, indem er von der ServiceBase Klasse und von einer WCF-Dienstvertragsschnittstelle erbt. Die ServiceHost -Instanz wird erstellt, mit einer überschriebenen OnStart(String[]) -Methode geöffnet und mit einer überschriebenen OnStop() -Methode geschlossen. Eine Installer-Klasse, die Installer erbt, muss auch implementiert werden, damit das Programm vom Installutil.exe-Tool als Windows-Dienst installiert werden kann. Weitere Informationen finden Sie unter How to: Host a WCF Service in a Managed Windows Service. Das Szenario, das von der verwalteten Windows-Dienst-Hostingoption aktiviert wird, ist eines lang laufenden WCF-Diensts, der außerhalb von IIS in einer sicheren Umgebung gehostet wird, die nicht durch Nachrichten aktiviert wird. Die Lebensdauer des Diensts wird stattdessen vom Betriebssystem gesteuert. Diese Hostingoption ist in allen Versionen von Windows verfügbar.
Internetinformationsdienste (IIS)
Die IIS-Hostingoption ist in ASP.NET integriert und verwendet die Features, die diese Technologien bieten, z. B. Prozessrecycling, Herunterfahren im Leerlauf, Prozessintegritätsüberwachung und nachrichtenbasierte Aktivierung. Auf den Betriebssystemen Windows XP und Windows Server 2003 ist dies die bevorzugte Lösung für das Hosten von Webdienstanwendungen, die hochverwendbar und hochgradig skalierbar sein müssen. IIS bietet auch die integrierte Verwaltbarkeit, die Kunden von einem Serverprodukt der Unternehmensklasse erwarten. Diese Hostingoption erfordert, dass IIS korrekt konfiguriert wurde, jedoch muss keinerlei Hostcode für die Anwendung geschrieben werden. Weitere Informationen zum Konfigurieren des IIS-Hostings für einen WCF-Dienst finden Sie unter How to: Host a WCF Service in IIS.
Von IIS gehostete Dienste können nur den HTTP-Transport verwenden. Die Implementierung in IIS 5.1 hat einige Einschränkungen in Windows XP eingeführt. Die nachrichtenbasierte Aktivierung, die von IIS 5.1 unter Windows XP für einen WCF-Dienst bereitgestellt wird, blockiert alle anderen selbst gehosteten WCF-Dienste auf demselben Computer daran, Port 80 zur Kommunikation zu nutzen. WCF-Dienste können im gleichen AppDomain/Application Pool/Worker Process wie andere Anwendungen ausgeführt werden, wenn sie von IIS 6.0 unter Windows Server 2003 gehostet werden. Da WCF und IIS 6.0 jedoch beide den Kernelmodus-HTTP-Stapel (HTTP.sys) verwenden, kann IIS 6.0 Port 80 für andere selbst gehostete WCF-Dienste freigeben, die auf demselben Computer ausgeführt werden, im Gegensatz zu IIS 5.1.
Windows-Prozessaktivierungsdienst (WAS)
Der Windows-Prozessaktivierungsdienst (WAS) ist der neue Prozessaktivierungsmechanismus für Windows Server 2008, der auch unter Windows Vista verfügbar ist. Es behält das vertraute IIS 6.0-Prozessmodell (Anwendungspools und nachrichtenbasierte Prozessaktivierung) und Hostingfeatures (z. B. schneller Ausfallschutz, Integritätsüberwachung und Recycling) bei, entfernt jedoch die Abhängigkeit von HTTP aus der Aktivierungsarchitektur. IIS 7.0 verwendet WAS zum Ausführen der nachrichtenbasierten Aktivierung über HTTP. Zusätzliche WCF-Komponenten integrieren sich auch in WAS, um die nachrichtenbasierte Aktivierung über andere von WCF unterstützte Protokolle bereitzustellen, z. B. TCP, MSMQ und benannte Pipes. Auf diese Weise können Anwendungen, die Kommunikationsprotokolle verwenden, die IIS-Features wie Prozessrecycling, schnellen Fail-Schutz und das allgemeine Konfigurationssystem verwenden, das nur für HTTP-basierte Anwendungen verfügbar war.
Diese Hostingoption erfordert, dass WAS ordnungsgemäß konfiguriert ist, aber sie erfordert nicht, dass Sie hostingcode als Teil der Anwendung schreiben. Weitere Informationen zum Konfigurieren von WAS-Hosting finden Sie unter How to: Host a WCF Service in WAS.
Auswählen einer Hostingumgebung
In der folgenden Tabelle sind einige der wichtigsten Vorteile und Szenarien zusammengefasst, die den einzelnen Hostingoptionen zugeordnet sind.
Hostingumgebung | Häufige Szenarien | Wichtige Vorteile und Einschränkungen |
---|---|---|
Verwaltete Anwendung ("selbst gehostet") | – Konsolenanwendungen, die während der Entwicklung verwendet werden. – Rich WinForm- und WPF-Clientanwendungen, die auf Dienste zugreifen. |
-Flexibel. Einfach zu implementieren. - Keine Unternehmenslösung für Dienste. |
Windows-Dienste (früher als NT-Dienste bezeichnet) | – Ein langfristig ausgeführter WCF-Dienst, der außerhalb von IIS gehostet wird. | - Dienstprozesslebensdauer vom Betriebssystem gesteuert, nicht nachrichtenaktiviert – Unterstützt von allen Versionen von Windows. - Sichere Umgebung. |
IIS 5.1, IIS 6.0 | – Paralleles Ausführen eines WCF-Diensts mit ASP.NET Inhalten im Internet mithilfe des HTTP-Protokolls. | - Prozessrecycling. - Herunterfahren bei Leerlauf - Prozessgesundheitsüberwachung. – Nachrichtenbasierte Aktivierung. – Nur HTTP. |
Windows-Prozessaktivierungsdienst (WAS) | – Ausführen eines WCF-Diensts ohne Installation von IIS im Internet mithilfe verschiedener Transportprotokolle. | - IIS ist nicht erforderlich. - Prozessrecycling. - Herunterfahren bei Leerlauf - Prozessgesundheitsüberwachung. – Nachrichtenbasierte Aktivierung. - Funktioniert mit HTTP, TCP, named pipes und MSMQ. |
IIS 7.0 | – Ausführen eines WCF-Diensts mit ASP.NET Inhalt. – Ausführen eines WCF-Diensts im Internet mithilfe verschiedener Transportprotokolle. |
- WAS-Vorteile. – Integriert in ASP.NET- und IIS-Inhalte. |
Die Wahl einer Hostingumgebung hängt von der Version von Windows ab, auf der sie bereitgestellt wird, die Transporte, die sie zum Senden von Nachrichten und zum Typ des Prozess- und Anwendungsdomänenrecyclings benötigt. In der folgenden Tabelle sind die Daten zusammengefasst, die sich auf diese Anforderungen beziehen.
Hostingumgebung | Plattformverfügbarkeit | Unterstützte Transportprotokolle | Prozess- und AppDomain-Recycling |
---|---|---|---|
Verwaltete Anwendungen ("selbst gehostet") | Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008 |
HTTP, net.tcp, net.pipe, net.msmq |
Nein |
Windows-Dienste (früher als NT-Dienste bezeichnet) | Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008 |
HTTP, net.tcp, net.pipe, net.msmq |
Nein |
IIS 5.1 | Windows XP | HTTP | Ja |
IIS 6.0 | Windows Server 2003 | HTTP | Ja |
Windows-Prozessaktivierungsdienst (WAS) | Windows Vista, Windows Server 2008 | HTTP, net.tcp, net.pipe, net.msmq |
Ja |
Beachten Sie, dass das Ausführen eines Diensts oder einer Erweiterung von einem nicht vertrauenswürdigen Host die Sicherheit beeinträchtigt. Beachten Sie zudem, dass eine Anwendung sicherstellen muss, dass der Benutzer bzw. die Benutzerin nicht abgemeldet wird, wenn ein Diensthost (ServiceHost) mit Identitätswechsel geöffnet wird, indem beispielsweise die Windows-Identität (WindowsIdentity) des Benutzers bzw. der Benutzerin zwischengespeichert wird.