While implementing WCF service, at the end you will have to decide how to host it. In general there two options. Either you host it by yourself (self-hosting) or you host it in the existing host (for example IIS/WAS). This post shows advantages and disadvantages of Self-hosted service.
Advantages of Self-Hosting:
- Is easy to use: With only a few lines of code you have your service running.
- Is flexible: You can easily control the lifetime of your services through the Open() and Close() methods of ServiceHost<T>.
- Is easy to debug: Debugging WCF services that are hosted in a self-hosted environment provides a familiar way of debugging, without having to attach to separate applications that activate your service.
- Is easy to deploy: In general, deploying simple Windows applications is as easy as xcopy. You don't need any complex deployment scenarios on server farms, and the like, to deploy a simple Windows application that serves as a WCF ServiceHost.
- Supports all bindings and transports: Self-hosting doesn't limit you to out-of-the-box bindings and transports whatsoever. On Windows XP and Windows Server 2003, IIS limits you to HTTP only.
Disadvantages of Self-Hosting:
- Limited availability: The service is reachable only when the application is running.
- Limited features: Self-hosted applications have limited support for high availability, easy manageability, robustness, recoverability, versioning, and deployment scenarios. These scenarios have become a standard in last few years. Such features are provided by the WAS (Windows Activation Service) which is a part of IIS7 (delivered with Vista and Win2008). This hosting mechanism allows you to host the service by using of protocols like MSMQ, HTTP and TCP.
In other words, you shouldn't consider self-hosting for enterprise and production scenarios. Self-hosting is suitable during the development or demonstration phases of your enterprise project. Another suitable example where you would self-host your services is when you want applications on a user desktop to communicate with each other or in a peer-to-peer scenario.
Posted
Nov 08 2007, 02:47 PM
by
Damir Dobric