Hosting-DiensteHosting Services

Zur Aktivierung muss der Dienst in einer Laufzeitumgebung gehostet werden, die ihn erstellt und seinen Kontext sowie seine Lebensdauer steuert.To become active, a service must be hosted within a run-time environment that creates it and controls its context and lifetime. Windows Communication Foundation (WCF)-Dienste können in jedem Windows-Prozess ausgeführt werden, Code unterstützt verwalteten.Windows Communication Foundation (WCF) services are designed to run in any Windows process that supports managed code.

WCF bietet ein einheitliches Programmiermodell zum Erstellen von dienstorientierten Anwendungen.WCF provides a unified programming model for building service-oriented applications. Dieses Programmiermodell bleibt konsistent und ist von der Laufzeitumgebung unabhängig, in der der Dienst bereitgestellt wird.This programming model remains consistent and is independent of the run-time environment in which the service is deployed. In der Praxis bedeutet das, dass der Code für Dienste relativ unabhängig von der Hostingoption ist.In practice, this means that the code for your services looks much the same whatever the hosting option.

Die Hostingoptionen reichen von einfachen Konsolenanwendungen bis zu Serverumgebungen, z. B. ein Windows-Dienst, der in einem Arbeitsprozess unter Internetinformationsdiensten (IIS) oder Windows Activation Service (WAS) ausgeführt wird.These hosting options range from running inside a console application to server environments such as a Windows service running within a worker process managed by Internet Information Services (IIS) or by Windows Process Activation Service (WAS). Entwickler wählen die Hostumgebung aus, die die Bereitstellungsanforderungen des Diensts erfüllt.Developers choose the hosting environment that satisfies the service's deployment requirements. Diese Anforderungen können von der Plattform, auf der die Anwendung bereitgestellt wird, dem Transportprotokoll, mit dem Nachrichten gesendet und empfangen werden müssen, dem Typ der Prozesswiederverwendung oder anderen Prozessverwaltungsfunktionen, die zur Sicherstellung adäquater Verfügbarkeit erforderlich sind, anderen Verwaltungsanforderungen oder Anforderungen bezüglich der Zuverlässigkeit abhängig sein.These requirements might derive from the platform on which the application is deployed, the transport on which it must send and receive messages, or on the type of process recycling and other process management required to ensure adequate availability, or on some other management or reliability requirements. Im nächsten Abschnitt erhalten Sie Informationen und Hinweise zu Hostingoptionen.The next section provides information and guidance on hosting options.

HostingoptionenHosting Options

Selbsthosting in einer verwalteten AnwendungSelf-Hosting in a Managed Application

WCF-Dienste können in jeder verwalteten Anwendung gehostet werden.WCF services can be hosted in any managed application. Dies ist die flexibelste Option, da hier die wenigste Infrastruktur bereitzustellen ist.This is the most flexible option because it requires the least infrastructure to deploy. Sie betten den Code für den Dienst in den verwalteten Anwendungscode ein und erstellen und öffnen dann eine Instanz von ServiceHost , um den Dienst zur Verfügung zu stellen.You embed the code for the service inside the managed application code and then create and open an instance of the ServiceHost to make the service available. Weitere Informationen finden Sie unter wie: Hosten eines WCF-Diensts in einer verwalteten Anwendung.For more information, see How to: Host a WCF Service in a Managed Application.

Diese Option ermöglicht zwei gängige Szenarien: WCF-Dienste in konsolenanwendungen und rich Client-Anwendungen wie z. B. die, basierend auf Windows Presentation Foundation (WPF) oder Windows Forms (WinForms).This option enables two common scenarios: WCF services running inside console applications and rich client applications such as those based on Windows Presentation Foundation (WPF) or Windows Forms (WinForms). Hosten eines WCF-Diensts in einer Konsolenanwendung eignet sich in der Regel während der Entwicklungsphase der Anwendung.Hosting a WCF service inside a console application is typically useful during the application's development phase. Die Anwendung lässt sich dann einfach debuggen. Ablaufverfolgungsinformationen über die Anwendung lassen sich leichter ermitteln, um herauszufinden, was intern in der Anwendung vor sich geht. Zudem lässt sich die Anwendung dann einfacher an andere Speicherorte kopieren.This makes them easy to debug, easy to get trace information from to find out what is happening inside of the application, and easy to move around by copying them to new locations. Diese Hostingoption erleichtert es Rich Client-Anwendungen, wie WPFWPF - und WinForms-Anwendungen, mit der Außenwelt zu kommunizieren.This hosting option also makes it easy for rich client applications, such as WPFWPF and WinForms applications, to communicate with the outside world. Z. B. eine Peer-zu-Peer Zusammenarbeitsclient, verwendet WPFWPF für die Benutzeroberfläche und einen WCF-Dienst, der es anderen Clients zum Verbinden und Daten auszutauschen ermöglicht auch hostet.For example, a peer-to-peer collaboration client that uses WPFWPF for its user interface and also hosts a WCF service that allows other clients to connect to it and share information.

Verwaltete Windows-DiensteManaged Windows Services

Diese Hostingoption besteht in der Registrierung der Anwendungsdomäne (AppDomain), die einen WCF-Dienst als verwalteten Windows-Dienst (früher als NT-Dienst) hostet, sodass die Prozesslebensdauer des Diensts vom dienststeuerungs-Manager (SCM) gesteuert wird für Windows-Dienste.This hosting option consists of registering the application domain (AppDomain) that hosts an WCF service as a managed Windows Service (formerly known as NT service) so that the process lifetime of the service is controlled by the service control manager (SCM) for Windows services. Wie bei der Selbsthosting-Option muss auch bei diesem Typ von Hostumgebung ein Teil des Hostingcodes Bestandteil des Anwendungscodes sein.Like the self-hosting option, this type of hosting environment requires that some hosting code is written as part of the application. Der Dienst wird sowohl als Windows-Dienst und als ein WCF-Dienst durch Vererben Dinge implementiert die ServiceBase -Klasse als auch aus einer WCF-service-Vertragsschnittstelle.The service is implemented as both a Windows Service and as an WCF service by causing it to inherit from the ServiceBase class as well as from an WCF service contract interface. Die ServiceHost -Instanz wird erstellt, mit einer überschriebenen OnStart(String[]) -Methode geöffnet und mit einer überschriebenen OnStop() -Methode geschlossen.The ServiceHost is then created and opened within an overridden OnStart(String[]) method and closed within an overridden OnStop() method. Außerdem muss eine Installerklasse implementiert werden, die von Installer abgeleitet ist, damit das Programm mit dem Tool Installutil.exe als Windows-Dienst installiert werden kann.An installer class that inherits from Installer must also be implemented to allow the program to be installed as a Windows Service by the Installutil.exe tool. Weitere Informationen finden Sie unter wie: Hosten eines WCF-Diensts in einem verwalteten Windows-Dienst.For more information, see How to: Host a WCF Service in a Managed Windows Service. Das Szenario, das durch die Hostingoption verwalteten Windows-Dienst aktiviert ist, die eine lang andauernde WCF-Diensts in einer sicheren Umgebung, die nicht nachrichtenaktivierten außerhalb von IIS gehostet.The scenario enabled by the managed Windows Service hosting option is that of a long-running WCF service hosted outside of IIS in a secure environment that is not message-activated. Die Lebensdauer des Diensts wird stattdessen vom Betriebssystem gesteuert.The lifetime of the service is controlled instead by the operating system. Diese Hostingoption ist in allen Windows-Versionen verfügbar.This hosting option is available in all versions of Windows.

IIS (Internet Information Services)Internet Information Services (IIS)

Die IIS-Hostingoption ist in ASP.NETASP.NET integriert und nutzt die Features dieser Technologie, beispielsweise die Prozesswiederverwendung, das Herunterfahren der Anwendung und ihrer Dienste bei Leerlauf, die Prozessüberwachung und die nachrichtenbasierte Aktivierung.The IIS hosting option is integrated with ASP.NETASP.NET and uses the features these technologies offer, such as process recycling, idle shutdown, process health monitoring, and message-based activation. Unter den Betriebssystemen Windows XPWindows XP und Windows Server 2003Windows Server 2003 ist dies die bevorzugte Lösung für das Hosten von Webdienstanwendungen, die stets verfügbar und weitgehend skalierbar sein müssen.On the Windows XPWindows XP and Windows Server 2003Windows Server 2003 operating systems, this is the preferred solution for hosting Web service applications that must be highly available and highly scalable. IIS bietet zudem die integrierte Verwaltbarkeit, die Kunden von einem Serverprodukt für Unternehmen erwarten.IIS also offers the integrated manageability that customers expect from an enterprise-class server product. Diese Hostingoption erfordert, dass IIS korrekt konfiguriert wurde, jedoch muss keinerlei Hostcode für die Anwendung geschrieben werden.This hosting option requires that IIS be properly configured, but it does not require that any hosting code be written as part of the application. Weitere Informationen zum Konfigurieren von IIS-hosting für einen WCF-Dienst finden Sie unter wie: Hosten eines WCF-Diensts in IIS.For more information about how to configure IIS hosting for a WCF service, see How to: Host a WCF Service in IIS.

Beachten Sie, dass von IIS gehostete Dienste nur den HTTP-Transport verwenden können.Note that IIS-hosted services can only use the HTTP transport. Mit der Implementierung in IIS 5.1 wurden einige Einschränkungen in Windows XPWindows XPeingeführt.Its implementation in IIS 5.1 has introduced some limitations in Windows XPWindows XP. Die Nachrichtenbasierte Aktivierung, die für einen WCF-Dienst von IIS 5.1 auf bereitgestellten Windows XPWindows XP alle anderen selbst gehosteten WCF-Dienst auf demselben Computer aus der Verwendung von Port 80 Kommunikation blockiert.The message-based activation provided for an WCF service by IIS 5.1 on Windows XPWindows XP blocks any other self-hosted WCF service on the same computer from using port 80 to communicate. WCF-Dienste können ausgeführt, in der gleichen AppDomain/Application Pool/Worker Process wie andere Anwendungen, die beim Hosten von IIS 6.0IIS 6.0 auf Windows Server 2003Windows Server 2003.WCF services can run in the same AppDomain/Application Pool/Worker Process as other applications when hosted by IIS 6.0IIS 6.0 on Windows Server 2003Windows Server 2003. Aber da WCF und IIS 6.0IIS 6.0 beide verwenden den Kernelmodus-HTTP-Protokollstapel (HTTP.sys), IIS 6.0IIS 6.0 anderen selbst gehosteten WCF-Diensten auf demselben Computer befinden, im Gegensatz zu IIS 5.1 Port 80 freigeben können.But because WCF and IIS 6.0IIS 6.0 both use the kernel-mode HTTP stack (HTTP.sys), IIS 6.0IIS 6.0 can share port 80 with other self-hosted WCF services running on the same machine, unlike IIS 5.1.

Windows Process Activation Service (WAS)Windows Process Activation Service (WAS)

Windows Process Activation Service (WAS) ist der neue Prozessaktivierungsmechanismus für Windows Server 2008Windows Server 2008 , der auch unter Windows VistaWindows Vistaverfügbar ist.Windows Process Activation Service (WAS) is the new process activation mechanism for the Windows Server 2008Windows Server 2008 that is also available on Windows VistaWindows Vista. In WAS wurden das bekannte IIS 6.0IIS 6.0 -Prozessmodell (Anwendungspools und nachrichtenbasierte Prozessaktivierung) und Hostingfunktionen (z. B. schneller Ausfallschutz, Systemüberwachung und Wiederverwendung) beibehalten, jedoch wurde die Abhängigkeit von HTTP aus der Aktivierungsarchitektur getilgt.It retains the familiar IIS 6.0IIS 6.0 process model (application pools and message-based process activation) and hosting features (such as rapid failure protection, health monitoring, and recycling), but it removes the dependency on HTTP from the activation architecture. IIS 7.0IIS 7.0 nutzt WAS zur nachrichtenbasierten Aktivierung über HTTP. uses WAS to accomplish message-based activation over HTTP. Zusätzliche WCF-Komponenten schließen auch WAS die Nachrichtenbasierte Aktivierung bereit, über die anderen Protokolle, die WCF unterstützt, z. B. TCP, MSMQ und named Pipes.Additional WCF components also plug into WAS to provide message-based activation over the other protocols that WCF supports, such as TCP, MSMQ, and named pipes. Dies ermöglicht es Anwendungen, die mit Kommunikationsprotokollen arbeiten, die IIS-Features zu nutzen, die nur für HTTP-basierte Anwendungen verfügbar waren, beispielsweise die Prozesswiederverwendung, den schnellen Fehlerschutz und das gemeinsame Konfigurationssystem.This allows applications that use communication protocols to use the IIS features such as process recycling, rapid fail protection, and the common configuration system that were only available to HTTP-based applications.

Diese Hostingoption erfordert, dass WAS korrekt konfiguriert wurde, jedoch muss keinerlei Hostcode für die Anwendung geschrieben werden.This hosting option requires that WAS be properly configured, but it does not require you to write any hosting code as part of the application. Weitere Informationen zum Konfigurieren von gehostet hat, finden Sie unter wie: Hosten eines WCF-Diensts in WAS.For more information about how to configure WAS hosting, see How to: Host a WCF Service in WAS.

Auswählen einer HostumgebungChoosing a Hosting Environment

In der folgenden Tabelle werden einige wichtige Vorteile und Szenarien im Zusammenhang mit den verschiedenen Hostingoptionen zusammengefasst.The following table summarizes some of the key benefits and scenarios associated with each of the hosting options.

HostumgebungHosting Environment Häufige SzenarienCommon Scenarios Hauptvorteile und EinschränkungenKey Benefits and Limitations
Verwaltete Anwendung ("Selbsthosting")Managed Application ("Self-Hosted") -Konsolenanwendungen während der Entwicklung verwendet.- Console applications used during development.
-Rich WinForm- und WPFWPF Clientanwendungen, die auf Dienste zugreifen.- Rich WinForm and WPFWPF client applications accessing services.
-Flexibel.- Flexible.
-Leicht bereitzustellen.- Easy to deploy.
-Keine unternehmenslösung für Dienste.- Not an enterprise solution for services.
Windows-Dienste (früher als NT-Dienste bezeichnet)Windows Services (formerly known as NT services) – Ein langer WCF-Dienst außerhalb von IIS gehostet.- A long-running WCF service hosted outside of IIS. -Prozesslebensdauer des Dienst, der vom Betriebssystem, nicht nachrichtenaktivierten gesteuert wird.- Service process lifetime controlled by the operating system, not message-activated.
-Die von allen Versionen von Windows unterstützt werden.- Supported by all versions of Windows.
-Sicheren Umgebung.- Secure environment.
IIS 5.1, IIS 6.0IIS 6.0IIS 5.1, IIS 6.0IIS 6.0 -Ausführen eines WCFS-service-Seite-an-Seite mit ASP.NETASP.NET Inhalt im Internet unter Verwendung des HTTP-Protokolls.- Running a WCF service side-by-side with ASP.NETASP.NET content on the Internet using the HTTP protocol. -Prozesswiederverwendung.- Process recycling.
-Im Leerlauf Herunterfahren.- Idle shutdown.
-Prozessüberwachung.- Process health monitoring.
-Die Nachrichtenbasierte Aktivierung.- Message-based activation.
-Nur HTTP.- HTTP only.
Windows Process Activation Service (WAS)Windows Process Activation Service (WAS) -Ausführen einer WCF-Diensts ohne Installation von IIS im Internet unter Verwendung verschiedener Transportprotokolle.- Running a WCF service without installing IIS on the Internet using various transport protocols. -IIS ist nicht erforderlich.- IIS is not required.
-Prozesswiederverwendung.- Process recycling.
-Im Leerlauf Herunterfahren.- Idle shutdown.
-Prozessüberwachung.- Process health monitoring.
-Die Nachrichtenbasierte Aktivierung.- Message-based activation.
-Funktioniert mit HTTP, TCP, named Pipes und MSMQ.- Works with HTTP, TCP, named pipes, and MSMQ.
IIS 7.0IIS 7.0 -Ausführen eines WCFS-Diensts mit ASP.NETASP.NET Inhalt.- Running a WCF service with ASP.NETASP.NET content.
-Ausführen einer WCF-Diensts im Internet unter Verwendung verschiedener Transportprotokolle.- Running a WCF service on the Internet using various transport protocols.
-Vorteile wurde.- WAS benefits.
-Integration in ASP.NETASP.NET und IIS-Inhalt.- Integrated with ASP.NETASP.NET and IIS content.

Die Wahl der Hostumgebung hängt von der Windows-Version ab, unter der der Dienst bereitgestellt wird, den für die Übermittlung von Nachrichten erforderlichen Transportprotokollen und der erforderlichen Art der Prozess- und Anwendungsdomänenwiederverwendung.The choice of a hosting environment depends on the version of Windows on which it is deployed, the transports it requires to send messages and the type of process and application domain recycling it requires. In der folgenden Tabelle werden die Daten zu diesen Anforderungen zusammengefasst.The following table summarizes the data related to these requirements.

HostumgebungHosting Environment PlattformverfügbarkeitPlatform Availability Unterstützte TransportprotokolleTransports Supported Prozess- und AppDomain-WiederverwendungProcess and AppDomain Recycling
Verwaltete Anwendungen ("Selbsthosting")Managed Applications ("Self-Hosted") Windows XPWindows XP, Windows Server 2003Windows Server 2003, Windows VistaWindows Vista,, Windows Server 2003Windows Server 2003, Windows VistaWindows Vista,

Windows Server 2008Windows Server 2008
HTTP,HTTP,

net.tcp,net.tcp,

net.pipe,net.pipe,

net.msmqnet.msmq
NeinNo
Windows-Dienste (früher als NT-Dienste bezeichnet)Windows Services (formerly known as NT services) Windows XPWindows XP, Windows Server 2003Windows Server 2003, Windows VistaWindows Vista,, Windows Server 2003Windows Server 2003, Windows VistaWindows Vista,

Windows Server 2008Windows Server 2008
HTTP,HTTP,

net.tcp,net.tcp,

net.pipe,net.pipe,

net.msmqnet.msmq
NeinNo
IIS 5,1IIS 5.1 Windows XPWindows XP HTTPHTTP JaYes
IIS 6.0IIS 6.0 Windows Server 2003Windows Server 2003 HTTPHTTP JaYes
Windows Process Activation Service (WAS)Windows Process Activation Service (WAS) Windows VistaWindows Vista, Windows Server 2008Windows Server 2008, Windows Server 2008Windows Server 2008 HTTP,HTTP,

net.tcp,net.tcp,

net.pipe,net.pipe,

net.msmqnet.msmq
JaYes

Sie müssen unbedingt beachten, dass die Sicherheit gefährdet wird, wenn ein Dienst oder eine Erweiterung auf einem nicht vertrauenswürdigen Host ausgeführt wird.It is important to note that running a service or any extension from an untrusted host compromises security. Beachten Sie zudem, dass eine Anwendung sicherstellen muss, dass der Benutzer nicht abgemeldet wird, wenn ein ServiceHost mit Identitätswechsel geöffnet wird, indem beispielsweise die WindowsIdentity des Benutzers zwischengespeichert wird.Also, note that when opening a ServiceHost under impersonation, an application must ensure that the user is not logged off, for example by caching the WindowsIdentity of the user.

Siehe auchSee Also

SystemanforderungenSystem Requirements
Grundlegender ProgrammierlebenszyklusBasic Programming Lifecycle
Implementieren von DienstverträgenImplementing Service Contracts
Vorgehensweise: Hosten eines WCF-Diensts in IISHow to: Host a WCF Service in IIS
Vorgehensweise: Hosten eines WCF-Diensts in WASHow to: Host a WCF Service in WAS
Vorgehensweise: Hosten eines WCF-Diensts in einem verwalteten Windows-DienstHow to: Host a WCF Service in a Managed Windows Service
Vorgehensweise Hosten eines WCF-Diensts in einer verwalteten AnwendungHow to: Host a WCF Service in a Managed Application