.NET Interop Resources RRS feed

  • General discussion

  • This material is cross-maintained on a blog page for easier linking and location via Internet search.

    • All About Interop: Connecting .NET to just about anything else.  (web log)
      The blog of Microsoft's Dino Chiesa covers general interoperability involving .NET.  Although the blog tends to feature interoperability via communication arrangements, such as Web Services, there are discussions of topics related to linking and run-time interoperability.  Click the "Interoperability" tag on any page to zero in on interoperability-focused posts.  (Thanks to Enzo De Lorenzi.)
    • Tim Mallalieu and Jeromy Carriere: Enterprise Interoperability: .NET and J2EE (via Warren DuBois).  article, Building Distributed Applications, Enterprise Architecture Patterns & Practices, MSDN Online, January 2004.  
      Although slightly dated, this article provides an overview and many links for those looking to address the different opportunities and trade-offs.
    • Gotchas with .NET (web article, via Silvain Trudel)
      Jeff Cope addresses some specific .NET COM Interop considerations in the context of integration with PDMWorks Enterprise.  Although some good understanding of Interop is required to apply these tips in other situations, they may be useful to review.
    • Jesús Rodríguez: Interoperability with Message Exchange Patterns Created Using BEA Weblog 8.1.3 (via Messages and Services).  article, Building Distributed Applications, Enterprise Architecture Patterns & Practices, MSDN Online, January 2005.
         Although grounded in a very specific case, the narration of the various considerations may be useful in considering other cases of web services interoperability.  There are additional cases listed at the Messages and Services page.  Here the .NET operation is as a client or server process of a web-service exchange.
    • Interoperating with Unmanaged Code.  onliine article, .NET Framework Developers Guide, MSDN Online (undated).
      An overview from the .NET perspective, dealing with pre-C++/CLI cases.  This additional view may help form an understanding of what is involved.  This assumes some knowledge of unmanaged code technologies (Win32, COM, ActiveX, etc.)
    • Thottam R. Sriram: Introduction to COM Interop.  article, CLR Inside Out column, MSDN Magazine, January 2007.
         This introduction takes a leisurely approach through the basics of interoperability between unmanaged COM code and managed .NET code. In addition to demonstration of all cases, there is discussion of debugging, with additional references for further resources.
    • Managed, Native, and COM Interop Team on CodePlex (project web folder, via Darren Stokes)
      The main project of this effort is the P/Invoke Interop Assistant that can be used to see how C/C++ calls are translated to .NET calls, and how .NET entries can be accessed from C/C++ calls.  There are help files and guidance on how parameters are marshalled between the Win32 native and the .NET environments.  This is an useful way to understand Interop from execution environments that have C/C++ native calling and entry-point provisions.
    • Yi Zhang and Xiaoying Guo: Marshaling between Managed and Unmanaged Code.  article, CLR Inside Out column, MSDN Magazine, January 2008.
         This article provides an extensive analysis of the ways that calls and datatypes are in either direction between managed and unmanged code.  An early version of the P/Invoke Interop Assistant is provided along with the downloadable examples.
    • MSDN Magazine (online issues).
      The on-line issues extend back to March, 2000.  The magazine articles can be found by issue, by column, and by topic (all in the sub-menu at the top of the home page).  All code can be downloaded and individual issues can be downloaded in HTML Help (.chm) format. 
    • MSDN Online (web site).
      The on-line vresion of the Microsoft Developers Network provides extensive materials including the online issues of MSDN Magazine.  The recently-updated site design provides easy search for interop-related materials, with opportunity for browsing and narrowing the search to more-specific material of interest.
    • Native and .NET Interoperability.  (online article) MSDN Library
      This MSDN section deals with the ways that .NET and Native code can be mixed using the C++/CLI extensions of VC++ 2005 and later.  It may shed more light on efforts to mix code as part of an integration across different development and runtime environments.
    • Adam Nathan: .NET and COM: The Complete Interoperability Guide.  Sams Publishing (Indianapolis, IN: 2002), ISBN 0-672-32170-X pbk (2 volumes).  
      Although this book was published at the time that .NET 1.0 shipped, it is probably the most comprehensive treatment of the topic that will ever be found, with substantial code examples and description of the various tools that are useful in a great variety of combinations.  Although the C++/CLI extensions were not available, and .NET is now richer, there are still topics here that are found nowhere else.  This resource is also indicated if one is considering using COM as a way to access .NET from other native-programming environments.  I also find it valuable in describing how to design for interoperability at either starting point for an interoperability solution.
    • .NET Gotchas (book, via Jeff Cope)
      This 2005 O'Reilly book by Venkat Subramaniam lists a number of elements to watch out for in using COM Interop and also in deploying .NET Assemblies that use COM objects underneath.
    • Stephen R. G. Fraser: Pro Visual C++/CLI and the .NET 2.0 Platform.  Apress (Berkeley, CA: 2006), ISBN 1-59059-640-4
      This is a thick and somewhat murky book.  It tends to look at VC++ entirely from the C++/CLI language that the /clr option switches to.  It does not connect the dots to native C++ that well.  The pacing is leisurely enough that patient testing of the material by creating and varying the examples and samples may be useful.  There are only two chapters focused on the interactions with unmanaged code.
    • The ServerSide Interoperability Blog. (web log)
      Although silent since December 2007, this blog is directed to cross-platform interoperability.  The archives have useful content.  The sponsoring site TheServerSide.com tends to look at interoperability and integration from the Java side.  Sponsoring site TheServerSide.net starts on the .NET side, with material on "language interop."  These sites provide registration for e-mail notices of information and announcements, including ones related to interoperability.
    • VST.NET (via Marc's Blog Cabin).  open-source project folder, CodePlex (LGPL 2.1 license).
      This is an early version (0.2 as of 2008-06-21) of a developing worked example of a framework for starting from the C Language API that VST modules must offer, down through implementation of the module via .NET (exploiting Visual C++/CLI for the bridge, C# for the managed-code components called from the bridge).  Virtual Studio Technology (VST) is an audio plug-in model defined by Steinberg Media Technologies and used to add audio processors and instruments to popular audio creation software.  VST.NET is a real-world example of taking a specialized interface and allowing creation of VSTs using .NET via interop through C++/CLI.  VST is a de facto standard for interoperable plug-ins of these fixtures.  There is additional information on author Marc Shapiro's Jacobi's blog.  The framework model may be more than what's needed in a particular interop situation.  The modularization and use of a managed-code loader are instructive either way.

    I keep seeing questions about in-process integration of .NET with other execution models (Win32, Java, ASP before .NET, etc.).  Some have been here on the Interoperability Forums and others are found spread around developer-oriented MSDN Forums.  It seems useful to locate some useful resources, so I am offering this thread.  I want to find more resources, especially anything about guidance on how to keep such integrations simple and easy to verify and troubleshoot.

       update 2008-08-05: Corrected Marc Jacobi's name as the author of VST.NET.  Also, the latest version of this list (no changes yet) is maintained on a blog page, for the reasons given there.
       update 2008-06-22: This list will apear rather random until I add enough material to apply some organization and guidance.  The current entries are in alphabetical-order by title.

    • Edited by orcmid Tuesday, August 5, 2008 3:07 PM Corrected Jacobi for .NETX and cross-linked to a blog-page version
    Friday, June 20, 2008 4:07 AM