• The host can be provided by Internet Information Services (IIS), by the Windows Activation Service (WAS) on Windows Vista or Windows Server 2008, Windows 7 or later, on the Windows Server AppFabric, or by the developer as part of the application.
• In-process (or in-proc) hosting, where the service resides in the same process as the client, is a special case. By definition, the developer provides the host for the in-proc case.
IIS 5/6 Hosting
• The main advantage of hosting a service on the Microsoft IIS web server is that the host process is launched automatically upon the first client request, and IIS 5/6 manages the lifecycle of the host process.
• The main disadvantage of IIS 5/6 hosting is that you can only use HTTP.
• With IIS 5, you are further restricted to having all services use the same port number.
• Hosting in IIS is very similar to hosting a classic ASMX web service.
• You need to create a virtual directory under IIS and supply an .svc file.
• The .svc file functions similarly to an .asmx file and is used to identify the service code behind the file and class.
Using Visual Studio 2010
• You can use Visual Studio 2010 to generate a boilerplate IIS-hosted service.
• From the File menu, select New Web Site, then select WCF Service from the New Web Site dialog box. Visual Studio 2010 creates a new website, a service code, and a matching .svc file.
• You can also use the Add New Item dialog box to add another service later.
Self-Hosting
• Self-hosting is the technique in which the developer is responsible for providing and managing the lifecycle of the host process.
• Use self-hosting when you want a process (or machine) boundary between the client and the service and when you are using the service in-proc—that is, in the same process as the client.
• You can provide any Windows process, such as a Windows Forms application, a WPF application, a Console application, or a Windows NT Service.
• You can provide a host with only a few lines of code.
• A self-hosted service can use any WCF transport protocol, and you can take advantage of all the WCF features, including the service bus, discovery, and utilize a singleton service.
• Hosting application config file (app.config) typically lists the types of the services you wish to host and expose to the world.
• You need to provide the constructor of ServiceHost with the service type and optionally with default base addresses.
• The set of base addresses can be an empty set, and even if you provide base addresses, you can configure the service to use different base addresses.
• Having a set of base addresses enables the service to accept calls on multiple addresses and protocols and to use only a relative URI.
WAS Hosting
• The problem with hosting in IIS 5/6 is that it is a web server, not a hosting engine.
• It therefore requires you to masquerade your service as a website
• While ASP.NET encapsulates this step for you, it causes a significant increase in internal complexity, involving the HTTP modules and the ASP.NET pipeline.
• The problem is that the more moving parts involved, the higher the likelihood of something going wrong.
• As a result, hosting in IIS 5/6 is notorious for instability and the frequent need to reset the server or IIS 5/6. Moreover, limiting the service to using only HTTP makes IIS 5/6 ill-suited for intranet applications.
Thanks for sharing such a good information...
ReplyDelete