Chapter 5. Instancing and Concurrency

The first four chapters of this book have focused on how to create, host, and configure services and clients. You’ve learned how to design service contracts, how to work with most of the standard bindings, and how to select an appropriate hosting environment for your production services. In Chapter 4, I provided more detail about the ServiceHost type, which is at the heart of hosting WCF services. What haven’t been discussed yet are the features that control the lifetime of individual service instances allocated as messages are processed, and the features that support opposing needs for throughput and request throttling.

As I have mentioned before, WCF represents the unification of several server technologies: .NET Remoting, Enterprise Services, and ASMX. That means that WCF can support the following invocation scenarios:

  • Calls that cross application domains

  • Classic client-server calls where clients hold a reference to remote, state-aware objects and have some control over its lifetime

  • Distributed application calls that conserve resources by releasing remote objects while not in use

  • Singletons whose state is shared by multiple clients

  • Classic state-unaware web service calls

These scenarios imply that the lifetime of a service might be only for the duration of an operation, for the duration of a client session, or forever, in the case of the singleton. The choice of service lifetime varies by application—the expected calling pattern of clients, ...

Get Learning WCF now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.