本博客已经转移至www.mozlite.com,可能不会及时更新和关注留言记录,mvc请加群88794325(已满),8781765ASP.NET(MVC)讨论二群

[翻译]C#和COM的互操作

  这篇文章将探讨一下C#和COM之间的相互操作性,本文分两个部分:第一部分讲述了什么是COM,第二部分讲述在.NET Framework中怎样应用COM。

  第一部分:Component Object Model(COM)

  Component

  Component不是其他的
什么,而是可以嵌入到其他程序构成的并可重用的二进制软件。它是通过提供的通用接口而和其他程序进行交互操作的,这样就允许任何语言写的两个不同的应用程序进行通信。

  Component的重要性

  当今开发的一个程序由于消耗的时间长,而且
难度大,维护费高因此我们不能随便的将旧版本的程序给替换为新版本的程序。这个问题的解决方案就是重用Component。

  解决方案

  这个问题的解决方案就是将很多程序用到原有的函数给替换,并将其封装的一个通用的函数中。这样客户端要调用这个函数时就可以调用这个通用的函数已达到重用的效果。在我们的项目里,我们创建了5个应用程序以使其他用户能够简单的将他应用到各种语言中。

  COM框架

  为了能够让其他应用程序进行互操作必须遵循一定的规则,提供一个标准的接口。这样我们只需要一个标准的框架,而不要管他这个框架是谁开发的。

  COM犹如绿色打印

  如果所有程序都遵循着互操作的标准,不同人创建的应用程序间就可以相互操作,因此我们就可以开发我们所需要的所有应用程序公共特点的程序。Microsoft已经定义了一个标准模型以使的不同应用程序能够相互调用,这个模型就涉及到COM。他提供了相互调用不同程序解决方案的接口,无论是调用程序还是被调用的程序都必须遵循COM规则。COM的行为就像绿色的打印一样,他只提供理论上的程序接口而不包含它的解决方法。

  Microsoft COM

  当我们应用Window注册器注册一个COM或DCOM对象时,我们必须引用每一个对象的128位的唯一标识符GUID。无论什么时候一个客户端应用程序执行一个COM或DCOM对象时,客户端应用程序将通过Windows
Registry应用GUID来引用其对象。COM另一个特点就是无语言依赖性,COM客户端和COM对象都具有相同的布局和行为,无须关心我们用何种语言来开发这个COM。COM这种无特殊语言依赖性,可以让一个由多个组成(Component)部分的系统通过不同语言来开发。我们用什么语言来开发COM并没有关系。(......说明了COM的特点,无语言依赖性带来的好处)

  一个Component的接口

  Microsoft的IDL

  COM和DCOM的内在基本概念是接口,一个接口同意客户端和一个对象之间进行相互通信。如果我们定义接口比如VB,我们必须用微软的Interface Definition Language(IDL),这个IDL必须用Microsoft
Interface Definition Language编译器(MIDL)。

  GUID

  在一个COM对象中我们定义的每一个接口都包含一个
Universally Unique Identifier (UUID),OS就是利用这个来生成一个GUID。当一个客户端程序执行一个接口的COM对象时,该应用程序将引用其UUID。一个接口是客户端和COM对象怎样通信的许可证。
posted @ 2007-03-15 22:06  网魂小兵  Views(1899)  Comments(1Edit  收藏  举报