Hosting WCF Service

WCF service can be hosted in four ways :

1. Internet Information Server (IIS)

WCF services can be hosted within Internet Information Services. There is no requirement to write hosting code as part of the application and IIS automatically activates the service code as required. Services also benefit from IIS features such as management of process lifetime and automatic application restart after configuration changes. Services can be run within IIS by creating a .svc file, which contains the service code, and a configuration file, which contains binding information, and then saving them in an IIS virtual directory.

2. Windows Activation Service (WAS)

Windows Activation Service is the new process activation mechanism that is a feature of IIS 7.0. WAS builds on the existing IIS 6.0 process and hosting models, but is no longer dependent on HTTP. Although IIS 7.0 uses WAS over HTTP, WCF can use WAS to provide message-based activation over other protocols, such as TCP and named pipes. This helps WCF applications to take advantage of WAS features, such as process recycling, rapid fail protection, and the common configuration system, which were previously available only to HTTP-based applications.

3. Self-hosting

WCF services can be hosted inside any .NET managed application, such as console applications and Windows Forms or Windows Presentation Foundation (WPF) graphical applications. A developer creates a class that implements a WCF service contract interface, and specifies binding information in the application configuration file. The application code can then use an instance of System.ServiceModel.ServiceHost to make the service available at a particular Uniform Resource Identifier (baseAddress in the following code example).
[Visual Basic] Dim myHost As ServiceHost = New ServiceHost(GetType(MyService), baseAddress)
[C#] ServiceHost myHost = new ServiceHost(typeof(MyService), baseAddress)

4. Managed Windows Service

A WCF service can be registered as a Windows Service, so that it is under control of the Windows Service Control Manager (SCM). This is suitable for long-running WCF services that are hosted outside of IIS in a secure environment and are not message-activated. The WCF service benefits from the features of Windows Services, such as automatic start at start time and control by the SCM.
To host a WCF service in this way, the application must be written as a Managed Windows Service by inheriting from System.ServiceProcess.ServiceBase. It must also implement a WCF service contract interface and then create and open a ServiceHost to manage the WCF service.

Leave a Reply