Interoperability
The other big topic we want to cover in this chapter is the possibility of a .NET application "talking" to other installed applications in our system. This talking means instantiating these applications and interchanging data between them or asking the other applications to perform tasks we should program ourselves.
Initially (in versions previous to C# 4.0), this technology was exclusively COM-based. The trick was done via Interop using some DLLs called Type Libraries (TLB) or Object Libraries (OLB). The programmer should then use (reference) these libraries and instantiate their internal objects, which represent the internal components of the application to communicate with.
This was possible using a Runtime Callable Wrapper (RCW) whose operational schema is explained in the following figure:
Let's see how communication was made between the COM and .NET worlds. You have to keep in mind that COM is not a managed environment, and it executes instructions native...