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, 3rd 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.