博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[翻译]C#和COM的互操作
阅读量:6000 次
发布时间:2019-06-20

本文共 1443 字,大约阅读时间需要 4 分钟。

 
这篇文章将探讨一下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对象怎样通信的许可证。

本文转自网魂小兵博客园博客,原文链接:http://www.cnblogs.com/xdotnet/archive/2007/03/15/com_csharp.html,如需转载请自行联系原作者

你可能感兴趣的文章
【LabVIEW技巧】工厂模式_简单工厂
查看>>
页面的Tab选项卡 简单实例
查看>>
FTP传输协议的应用详解
查看>>
r语言ggplot2误差棒图快速指南
查看>>
python之处理异常
查看>>
c++中的虚函数
查看>>
遍历form表单里面的表单元素,取其value
查看>>
Socket网络通讯开发总结之:Java 与 C进行Socket通讯(转)
查看>>
逆波兰算法解析计算公式
查看>>
PHP TP框架基础
查看>>
directive ngChecked
查看>>
面试110道题
查看>>
python 08 文件操作
查看>>
uiwebview 清缓存。,mark
查看>>
强势解决:windows 不能在本地计算机中起动Tomcat参考特定错误代码1
查看>>
IDEA中Junit使用注意事项
查看>>
java程序员面试进阶准备
查看>>
Cordova插件中JavaScript代码与Java的交互细节介绍
查看>>
SMSSDK验证码服务端校验接口
查看>>
对话量子链创始人帅初:区块链发展目标是构建协同进化的生命体
查看>>