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, requirements ...
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.