This is a continuation from my last blog, Isolation of Out-of-Process COM Servers. Now I am moving my ‘Hello World’ EXE Server to a remote machine to demonstrate how remote object interacts in Offline Plug-in isolation system. I am using the term ‘EXE Server’ and ‘DCOM’ to refer out-of-process servers. Please refer MSDN link for more information about in-proc and out-of-proc servers.
I am modifying my client to connect to remote server for object instantiation. In the EXE server side, I add a new property named ‘ServerInfo’. It’s a binary string which return the EXE Server process ID and current system tick count through wire (tick count is the number of milliseconds elapsed since Windows boot up).
Now my client and EXE Server are ready. I am profiling new DCOMClient and save to AppHub. Next I am moving to remote machine where I need to register my updated DCOMServer using following command,
My server setup is also ready and I need to see how isolated client app communicate to remote server (remote out-of-process server is not isolated).
I am launching DCOMClient app thru Offline Plug-in and this is the output I got.
This is the Sysinternals process explorer output, process DCOMClient.exe is inside of isolation.
Figure: Process explorer view on client machine
I need to enter the server name or IP so that isolated client can instantiate remote object with the help of COM subsystem. On clicking “Launch DCOM Server”, my isolated client connect to remote server, instantiate component object, and get property ‘ServerInfo’ thru wire. This is the output I got.
I am moving to the server machine to see what process explorer shows now, I can see DCOMServer process instance, and the process ID is same as client shows.
Figure: Process explorer view on server machine (here server IP – 10.105.32.51)
Conclusion: Citrix Offline Plug-in allows isolated app to communicate with remote out-of-process servers. Make sure out-of-process server is registered outside of isolation on remote machine.
Citrix Offline Plugin