DotNet组件和COM组件的区别.doc

  1. 1、本文档共2页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DotNet组件和COM组件的区别

DotNet组件和COM组件的区别 ACCP7.0第一学期阶段项目《KTV点歌系统》,需要向工具箱中添加一个COM组件Windows Media Player,有些同学会产生疑问,这个COM组件和常用的.net组件有什么区别呢?我们在这里总结一下: 项目 COM组件(C++) .Net组件(C#) 元数据 在COM中,组件的所有信息存储在类型库中(也就是我们前面使用的TLB文件)。类型库包含了接口,方法,参数以及UUID等。这些通过IDL语言来进行描述。 在.Net组件中,它的元数据可以通过定制特性来扩展,所以你可以不用了解IDL。 内存管理 通过引用计数方法来进行组件内存释放管理。(参见第三章)客户程序必须调用AddRef()和Release()来进行计数管理,但计数为0的时候,销毁组件。 通过垃圾收集器来自动完成。 接口 拥有三种类型的接口,即从IUnknown继承的定制接口,分发接口以及双重接口。接口通过QueryInterface函数查询,然后使用。 通过强制类型转换来使用不同的接口。 方法绑定 COM一般是早期绑定,采用虚拟表来实现;对于分发接口采用了后期绑定。 通过System.Reflecting实现后期绑定。 数据类型 在定制接口中,所有C++的类型可以用于COM;但是对于双重接口和分发接口,只能使用VARIANT,BSTR等自动兼容的数据类型。 采用了Object替代VARIANT,能使用C#的所有数据类型(用C#实现)。 组件注册 所有的组件必须进行注册。每个接口,组件都具有唯一的ID,包括CLSID和PROGID。 分为私有程序集和共享程序集。私有程序集能在一定程度上解决DLL版本冲突,重写等问题。共享程序集类似于COM。具体见参考文献[4]。 线程模式 使用单元模型,增加了实现难度,必须为不同的操作系统版本增加不同的单元类型。 通过System.Threading来进行处理,相对于COM的线程管理比较简单些。 错误处理 COM中通过实现HRESULT和ISupportErrorInfo接口,该接口提供了错误消息、帮助文件的链接、错误源,以及错误信息对象。 实现ISupportErrorInfo的对象会自动映射到详细的错误信息和一个.Net异常。 事件处理 通过实现连接点的接口IConnectionPoint和接口IConnectionPointContainer来实现事件处理. 通过event和delegate关键字提供事件处理机制。 /

文档评论(0)

aicencen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档