1. 概述
Microsoft在解决和以往的COM和SDK开发技术之间的互操作性(Interoperability)方面做了很多的工作,其中包括COM和.NET对象之间的相互调用以及.NET如何调用SDK中的Windows库函数。本文试图用一种实践的方式探索COM和.NET对象之间的互操作(Interoperability)的实现以及相关的技术。
2. 发展历史
在面向对象技术发展的初期开始暴露出来了很多的问题,其中一个就是随着系统的复杂度不断上升,系统的类开始出现爆炸,而且对象之间的调用依赖无法在一个更高的抽象层次上彼此之间的松散耦合,这也因此导致了这种基于源代码的复用方式变得非常脆弱。基于组件的开发技术很好地解决了上面的问题,它在组件(某个功能的聚合,是一个类的集合)这个层次上实现了抽象和复用。在这个时期,COM(Component Object Model)技术作为这么一种方法论的实现方式开始展现它独特的魅力,而Microsoft则带领着IT界把这一技术推向了稳定、成熟。
而到了20世纪90年代末期,随着商业逻辑处理的复杂化以及很多个性化的需求的出现,软件复杂度也开始提高,COM技术在应用技术领域也开始显得力不从心了。在这个时候就需要一种更灵活的、基于标准的技术来支撑应用软件的开发,.NET作为一个具有跨时代意义的应用软件的开发平台悄然而至。.NET以一种基于平台方式(应用软件依赖于某个平台,可移植性依赖于平台),又在一个更高的层次上实现了软件的复用。
3. 问题描述
为了保持.NET和COM技术的可互操作性,Microsoft提供一个专门的组件来解决这个问题,可以参考命名空间System.Runtime.InteropService。它不为.NET对原有的COM组件的调用提供了一种有效的方式,同时也为用.NET编写COM组件提供一种便利。