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)Windows Communication Foundation (WCF) -Dienste können in jedem Windows-Prozess ausgeführt werden, der verwalteten Code unterstützt. services are designed to run in any Windows process that supports managed code.

WCFWCF stellt ein einheitliches Programmiermodell zum Erstellen von dienstorientierten Anwendungen bereit. 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

WCFWCF -Dienste können in jeder verwalteten Anwendung gehostet werden. 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 unterFor more information, seeWie: Hosten eines WCF-Diensts in einer verwalteten Anwendung. How to: Host a WCF Service in a Managed Application.

Diese Option ermöglicht zwei gängige Szenarien: WCFWCF -Dienste, die in einer Konsolenanwendung ausgeführt werden, und Rich Client-Anwendungen, wie die auf Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) oder Windows Forms (WinForms) basierenden Anwendungen.This option enables two common scenarios: WCFWCF services running inside console applications and rich client applications such as those based on Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) or Windows Forms (WinForms). Einen WCFWCF -Dienst in einer Konsolenanwendung zu hosten, ist in der Regel während der Entwicklungsphase der Anwendung nützlich.Hosting a WCFWCF 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. Ein Beispiel dafür ist ein Peer-to-Peer-Kollaborationsclient, der WPFWPF als Benutzeroberfläche nutzt und darüber hinaus als Host für einen WCFWCF -Dienst fungiert, der es anderen Clients ermöglicht, eine Verbindung mit ihm herzustellen und Daten auszutauschen.For example, a peer-to-peer collaboration client that uses WPFWPF for its user interface and also hosts a WCFWCF 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 WCFWCF -Dienst als verwalteten Windows-Dienst (früher NT-Dienst genannt) hostet, sodass die Prozesslebensdauer des Diensts vom Dienststeuerungs-Manager für Windows gesteuert wird.This hosting option consists of registering the application domain (AppDomain) that hosts an WCFWCF 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 als auch als WCFWCF -Dienst implementiert, indem er von der ServiceBase -Klasse und von einer WCFWCF -Dienstvertragsschnittstelle abgeleitet wird.The service is implemented as both a Windows Service and as an WCFWCF service by causing it to inherit from the ServiceBase class as well as from an WCFWCF 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 unterFor more information, seeWie: Hosten eines WCF-Diensts in einem verwalteten Windows-Dienst. How to: Host a WCF Service in a Managed Windows Service. Das Szenario, das durch die Hostingoption des verwalteten Windows-Diensts ermöglicht wird, besteht in einem WCFWCF -Dienst mit langer Laufzeit, der außerhalb der Internetinformationsdienste (IIS) in einer sicheren, nicht nachrichtenaktivierten Umgebung gehostet wird.The scenario enabled by the managed Windows Service hosting option is that of a long-running WCFWCF 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 finden Sie unterFor more information about zum Konfigurieren von IIS-Hosting für einen WCFWCF -Dienst finden Sie unter How to: Host a WCF Service in IIS. how to configure IIS hosting for a WCFWCF 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. Durch die nachrichtenbasierte Aktivierung, die von IIS 5.1 unter WCFWCF für einen Windows XPWindows XP -Dienst bereitgestellt wird, werden alle anderen selbst gehosteten WCFWCF -Dienste auf demselben Computer daran gehindert, Port 80 für die Kommunikation zu verwenden.The message-based activation provided for an WCFWCF service by IIS 5.1 on Windows XPWindows XP blocks any other self-hosted WCFWCF service on the same computer from using port 80 to communicate. WCFWCF -Dienste können im gleichen Arbeitsprozess unter AppDomain/Application Pool/Worker Process wie andere Anwendungen ausgeführt werden, wenn sie von IIS 6.0IIS 6.0 unter Windows Server 2003Windows Server 2003gehostet werden. 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. Weil jedoch sowohl WCFWCF als auch IIS 6.0IIS 6.0 den HTTP-Stack (HTTP.sys) des Kernelmodus verwenden, kann IIS 6.0IIS 6.0 im Gegensatz zu IIS 5.1 den Anschluss 80 mit anderen selbstgehosteten WCFWCF -Diensten, die auf demselben Computer ausgeführt werden, gemeinsam nutzen.But because WCFWCF 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 WCFWCF 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 WCFWCF -Komponenten sind in WAS integrierbar, um die nachrichtenbasierte Aktivierung mit anderen von WCFWCF unterstützten Protokollen zu ermöglichen, wie TCP, MSMQ und Named Pipes.Additional WCFWCF components also plug into WAS to provide message-based activation over the other protocols that WCFWCF 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 finden Sie unterFor more information about zum Konfigurieren von WAS-Hosting finden Sie unter How to: Host a WCF Service in WAS. 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 WCFWCF außerhalb von IIS gehosteten Dienst.- A long-running WCFWCF 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 einer WCFWCF Dienst Seite-an-Seite mit ASP.NETASP.NET Inhalt im Internet unter Verwendung des HTTP-Protokolls.- Running a WCFWCF 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 WCFWCF -Dienst ohne Installation von IIS im Internet unter Verwendung verschiedener Transportprotokolle.- Running a WCFWCF 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 einer WCFWCF Dienst mit ASP.NETASP.NET Inhalt.- Running a WCFWCF service with ASP.NETASP.NET content.
-Ausführen einer WCFWCF -Diensts im Internet unter Verwendung verschiedener Transportprotokolle.- Running a WCFWCF 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
How to: Host a WCF Service in IIS (Vorgehensweise: Hosten eines WCF-Diensts in IIS)How to: Host a WCF Service in IIS
How to: Host a WCF Service in IIS (Vorgehensweise: Hosten eines WCF-Diensts in WAS)How 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