Self-Hosting
Self-hosting is the simplest way to host your services, but it is also the approach that
yields the least number of hosting features. As the label implies, self-hosting requires you
to write the code necessary to initialize the ServiceHost
and manage its lifetime. At a minimum, you provide a managed process, instantiate a ServiceHost for each service, and then initialize them with
endpoints and binding configurations that define the communication channel for each endpoint
for incoming messages.
Typically, you’ll keep ServiceHost instances alive
for the lifetime of the application in which they are hosted. The ServiceHost is normally constructed on the application thread, but the service
model allocates worker threads for incoming requests to its service endpoints. Your job is
to keep that application thread and the ServiceHost alive
as long as you want to process requests. Any managed process will suffice for this purpose
including console, Windows Forms, WPF, and Windows services, as I discussed earlier.
Console Applications
Console applications are a popular hosting environment for developing and testing
services. As I discussed earlier, you need only create and open the ServiceHost instance and keep the console process alive to
receive and process requests. Example 4-2
illustrates how a typical console application achieves this, using Console.ReadLine( ) to keep the thread alive.
Console applications are ultimately impractical for deploying production services for a ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access