Supporting components and language integration in .NET – initial thoughts
The .NET architecture attempts to support language integration and components intuitively. One of the advantages of the metadata is that programming and reinforcing componentization becomes much easier because the programmer no longer has to fret about the registry for component deployment and other twirls like CLSIDs, IIDs, CoCreateInstanceEx, IDL, and so forth. Real language integration is intuitive because of the CTS, metadata, and IL.
Programmers should take time to acquaint themselves with how CLR activates objects, performs security checks on them, lays them out in memory, executes them, and garbage-collects them. All .NET assemblies are basically binary components. A programmer can treat each .NET assembly as a component that can be plugged into another component or application, without the requirement of code, since all the metadata for the component is supplied inside the .NET assembly. A COM programmer can readily see the difference here – he doesn’t need extraneous plumbing code as he would to build a component in COM. Since ALL .NET assemblies are components by nature, creating a component in .NET involves no extra plumbing.