Appendix B. Headers and Contexts
In every method for every call on a .NET object, there are explicit arguments passed in as
method parameters and implicit parameters available for the method body. Such implicit
parameters include the thread the call executes on (available via Thread.Current
); the call's app domain (available via AppDomain.Current
); the call's transactions, if any (available via Transaction.Current
); the call synchronization context (available
via SynchronizationContext.Current
); the security principal
of the call (available via Thread.CurrentPrincipal
); and
even the little-known execution context of the call itself (available via Thread.CurrentContext
). These out-of-band
parameters provide in effect the logical execution context of the call, essential for the
functioning of the object and .NET itself. But how can you pass additional contextual
parameters to your WCF service, forming your own custom context? Such a need is surprisingly
common and useful: for example, Chapter 4 uses a custom context to
manage the instance IDs of durable services, Chapter 8 uses a
custom context to provide the call priority, and Chapter 9 uses a custom context to pass the address of a queued response service. This appendix presents and contrasts two distinct techniques for passing and managing custom contexts, using the message headers or the dedicated context binding. For both options, I will share dedicated helper classes designed to streamline and automate the interaction. You will ...
Get Programming WCF Services, 2nd Edition 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.