I am writing my master's thesis on software components, and I include a discussion of .NET. (A software component is, per the definition I use and in the context of .NET, an assembly.) I would appreciate if members of this forum would be kind enough to review my .NET material, and let me know if any errors have crept in. (Please let me know if there is a more appropriate forum, newsgroup or mailing list for my request.)
The sections on .NET are available at these addresses:
My thesis is primarily a paper document, and a PDF version (in which the pertinent material may be found starting on page 91) is available at this address:
The main site is at this address:
You are welcome not to restrict your comments to the .NET material. I also discuss software components in general, develop an object model in C, sketch a COM-like component model and discuss enterprise services. In addition to .NET, I also cover Visual Basic, COM, Delphi, CORBA, as well as Java and OSGi. The final revision of my thesis will be licensed under a Creative Commons license.
Thanks for your time,
David Polberger (Send me an e-mail )
Master's student at Lund University, Department of Computer Science
- Edited by David Polberger Thursday, December 31, 2009 1:15 AM Fixed links
The .NET sections seem correct - I don't see anything blatently wrong in my cursory glance.
That being said, there is a large hole missing in the .NET interoperability page - you mention COM interoperability, which is one of the places .NET has a major breaking change from Java and other related technologies. However, there is another very large advantage .NET has when doing interop with native code: C++/CLI.
As of Visual Studio 2005, C++ has been able to write code that jointly targets native code and the CLR, and have single classes that mix the two technologies. This makes creating interoperability layers between native code much, much simpler than Java's JNI or J/Direct, especially if you have a complex native code base. C++/CLI and mixed mode assemblies really opened up an entirely different means of native-managed code interoperability, in a manner much more flexible and simple than previously available in other technologies.
Reed Copsey, Jr. - http://reedcopsey.com
Thanks for reviewing my .NET material.
If I understand you correctly, .NET supports mixing code targeting both the native machine and the CLR in the same assembly, and with C++/CLR, the native code can seamlessly make calls to the CLR and vice-versa, with the runtime handling all the details. That must certainly be a boon to productivity -- I'll read up on it and mention it in a footnote.