ARTICLE
Call Contexts in VB.NET
In this article I will explain you about Call Contexts in VB.NET.
The CallContext class can be thought of as "out-of-band" data or a channel hook.
It operates at a thread level within an application domain. To cross application
domain boundaries, objects must derive from the
System.Runtime.Remoting.Messaging.ILogicalThreadAffinative interface, see
Listing 25.18. An object registers with CallContext using the "key/value"
paradigm. It is hooked to each method call and is part of IMessage, the _CallContext
entry, which is sent over the wire. Using CallContext is simply a matter of
calling the static methods SetData() and GetData().
There is a standard
library (CallContextLib) and two console applications (CallContextServer and
CallContextClient) after creating these two console applications you need to
create a application named RemoteContextInfo it is the class that will contain the
out-of-band data. Here I will given the example of RemoteContextInfo class
and when you use this class with CallContextServer and
CallContextClient application the output which is produced is given in Figures 25.13 and 25.14 are the client and server output,
respectively.
Listing 25.18: RemoteContextInfo.vb
<Serializable()> _
Public Class RemoteContextInfo
Implements ILogicalThreadAffinative
Private m_machineName
As String =
Nothing
Private m_clientDir
As String =
Nothing
Public Sub New()
m_machineName = Environment.MachineName
m_clientDir = Environment.CurrentDirectory
End Sub
Public
ReadOnly Property MachineName()
As String
Get
Return (m_machineName)
End Get
End Property
Public
ReadOnly Property ClientDir()
As String
Get
Return (m_clientDir)
End Get
End Property
End Class
To get and set the call context data, simply use the following code:
Dim data
As RemoteContextInfo =
Nothing
data =
New RemoteContextInfo()
CallContext.SetData("Client",
data)
Dim data
As RemoteContextInfo =
DirectCast(CallContext.GetData("Client"),
RemoteContextInfo)
Figure 25.13: Client Output

Figure 25.14: Server Output

This is an ideal way for custom proxies or message sinks to pass information
from the client to the server or vice versa, without intruding into the
functionality of the application.
Conclusion
Hope this article would have helped you in understanding
Call Contexts in VB.NET.