DotNet组件和COM组件的区别
- 格式:doc
- 大小:52.50 KB
- 文档页数:2
COM接口协议协议名称:COM接口协议一、概述COM(Component Object Model)接口协议是一种用于在不同软件组件之间进行通信和交互的标准协议。
本协议旨在规范COM接口的定义、使用和实现,以确保不同组件之间的互操作性和可扩展性。
二、术语定义1. COM接口:指由COM组件提供的一组方法和属性,用于与其他COM组件进行通信和交互。
2. COM组件:指实现了COM接口的软件组件,可以是动态链接库(DLL)或可执行文件(EXE)等形式。
3. 客户端:指使用COM接口的组件,通过调用COM接口的方法和属性与COM组件进行交互。
4. 服务器:指提供COM接口的组件,响应客户端的请求并执行相应的操作。
三、COM接口定义规范1. 接口标识符(IID):每个COM接口都有一个唯一的IID,用于在运行时标识接口。
IID由128位的全局唯一标识符(GUID)表示。
2. 接口定义语言(IDL):用于描述COM接口的语言,包括接口名称、方法、属性、参数等信息。
IDL使用接口定义语句(interface)进行定义。
3. 接口继承:COM接口支持单继承,一个接口可以继承自另一个接口,并可以添加新的方法和属性。
4. 接口版本管理:接口的版本号由主版本号、次版本号和修订号组成,每次对接口进行修改时,需要递增相应的版本号。
5. 接口文档:每个COM接口都应该提供详细的接口文档,包括接口的功能、方法的使用说明、参数的含义和返回值等信息。
四、COM接口使用规范1. 接口调用方式:客户端通过获取COM组件的接口指针,调用接口的方法和属性来与COM组件进行交互。
2. 接口生命周期管理:客户端在使用完COM接口后,需要调用接口的释放方法(Release)来释放接口所占用的资源。
3. 接口错误处理:COM接口的方法在执行过程中可能会返回错误代码,客户端需要根据错误代码进行相应的错误处理。
4. 接口版本兼容性:COM接口的修改应该保持向后兼容性,即新版本的接口可以与旧版本的客户端兼容,反之亦然。
com 原理COM原理。
COM(Component Object Model)是一种面向对象的组件技术,它是微软公司在Windows操作系统中广泛应用的一种软件组件模型。
COM组件是一种可以被其他程序使用的独立的、可重用的软件单元,它可以以二进制形式存在于文件中,也可以作为动态链接库(DLL)的一部分存在。
COM组件可以被多种编程语言(如C++、Visual Basic、Delphi等)调用和使用,因此在Windows平台上得到了广泛的应用。
COM的核心思想是将软件功能划分为独立的组件,每个组件可以独立开发、测试、部署和维护。
这种模块化的设计思想使得软件开发变得更加灵活和高效,同时也方便了软件的升级和维护。
在COM中,每个组件都有自己的接口(Interface),其他程序可以通过调用这些接口来访问组件提供的功能。
这种基于接口的设计使得不同组件之间可以进行灵活的交互和组合,从而实现更加复杂的功能。
在COM中,组件之间的通信是通过接口调用来实现的。
每个COM组件都有一个或多个接口,每个接口都定义了一组相关的功能。
当一个程序需要使用某个组件的功能时,它首先需要获取该组件的接口指针,然后通过接口指针来调用组件提供的功能。
这种基于接口的通信机制使得组件之间的耦合度降低,同时也提高了系统的灵活性和可维护性。
COM组件的生命周期是由它的引用计数来管理的。
当一个程序需要使用某个组件时,它会通过接口指针来获取该组件的引用,并将引用计数加一;当不再需要使用该组件时,程序会释放该组件的引用,并将引用计数减一。
当引用计数减为零时,系统会自动销毁该组件,释放其占用的资源。
这种基于引用计数的内存管理机制使得COM组件的使用更加安全和高效。
在COM中,组件的注册是通过注册表(Registry)来实现的。
当一个COM组件被安装到系统中时,它会在注册表中创建相应的条目,包括组件的CLSID (Class Identifier)、接口的IID(Interface Identifier)等信息。
Dot NET框架下Com与ComGIS的发展对GIS软件组织方式的影响摘要:为了与java竞争,微软公司推出了dot net和dot net组件技术,dot net组件技术比com更加完善,微软公司也计划逐步用.net组件技术淘汰com。
在这一新的技术条件下,源于microsoft的com及以其为基础的comgis技术都在发生着巨大的变化。
本文立足于项目开发中的实际经验,以商用大型gis软件的最新发展成果为参考,对在dot net框架下com与comgis的发展进行了全面的分析,并以此为基础,分析了gis软件组织方式受到的影响。
关键词:dot net com comgis gis软件组织方式中图分类号:tp311.52 文献标识码:a 文章编号:1007-9416(2011)12-0140-021、概述在it领域,“唯一不变的规则就是永远在变”,组件技术也在推陈出新。
目前,基于com的组件技术依然是gis应用系统采用的主流。
但曾经带来gis技术变革的com技术存在诸多不足,例如“动态库地狱 (dll hell)”引起的组件版本冲突;对象无法继承引起的二次开发扩展能力局限,这些因素都会影响到基于com的gis技术的发展。
为了与java竞争,微软公司推出了dot net技术和dot net组件技术,dot net组件技术比com更加完善,微软公司也计划逐步用dot net组件技术淘汰com,并最终将形成dot net组件技术与java组件技术并行发展的局面。
据相关调查显示,2010年以来,选择dot net和java语言开发gis应用系统的单位将超过50%(图1),随着时间的推移,这一比例还将继续攀升。
这也表明基于dot net 和java技术的组件式gis将迅速推广应用,并会在不久的将来逐渐取代基于com的组件式gis。
因此,了解并掌握dot net及dot net 组件技术,对于gis企业在业内激烈的竞争中能否获得一线生机是极为重要的。
COM组件简介面向对象的思想难以适应这种散布式软件模型,于是组件化程序设计思想取得了迅速的进展。
依照组件化的程序设计的思想,复杂的应用程序被设计成一些小的,功能单一的组件模块,这些组件模块能够运行在同一台机械上,也能够运行在不同的机械上。
为了实现如此的应用软件,组建程序和组建程序之间需要一些极为细致的标准,只有组件程序遵守了这些一起的标准,然间系统才能正常运行。
为此,OMG和Microsoft别离提出了CORBA(Common Object Request Breaker Architecture)和COM(Component Object model)标准,目前CORBA模型要紧应用于UNIX操作系统平台上,而COM 那么要紧应用于Microsoft Windows操作系统平台上。
在COM标准中,一个组件程序也被称为一个模块,它能够是一个动态连接库(DLL), 被称为进程内组件(in-of-process component)也能够是一个可执行程序(EXE),被称为进程外组件(out-of-process component).COM对象是成立在二进制可执行代码级的基础上,而C++等语言中的对象是成立在源代码级基础上的,因此COM对象是语言无关的。
这一特性利用不同编程语言开发的组件对象进行交互成为可能。
在Microsoft Windows系统平台上,COM技术被应用于系统的各个层次,从底层的COM对象治理到上层的应用程序交互都用到了COM标准。
概述COM既提出了组件之间进行交互的标准,也提供了实现交互的环境,因为组件对象之间交互的标准不依托于任何特定的语言,因此COM也能够是不同语言协作开发的一种标准。
OLE技术以COM标准为基础,OLE充分发挥了COM标准的优势,使Windows操作系统上的应用程序具有极强的可交互性。
若是没有OLE的支持,Windows操作系统那么会逊色很多。
可是,COM标准并非局限于OLE技术,事实上,OLE技术只是COM的一个应用罢了,这几年,OLE 技术在进行网络互连是显示出了专门大的局限性,而COM那么表现出了极强的适应能力。
.NET与COM的关系.NET框架的一个主要目的是使COM开发变得更加容易。
COM开发过程中最难的一件事是处理COM基本结构。
因此,为了简化COM开发,.NET框架实际上已自动处理了所有在开发人员看来是与“COM”紧密相关的任务,包括引用计算、接口描述以及注册。
必须认识到,这并不意味着.NET框架组件不是COM组件。
事实上,使用Visual Studio 6.0的COM开发人员可以调用.NET 框架组件,并且在他们看来,后者更像是拥有iUnknown数据的COM 组件。
相反,使用Visual 的.NET框架开发人员则将COM组件视作.NET框架组件。
为了避免引起误解,这里需对这种关系加以特别说明:COM开发人员必须手动去做大多数.NET框架开发人员可以在运行时自动执行的事情。
例如,必须手写COM组件的安全性模块,且无法自动管理模块占用的内存,而在安装COM组件时,注册条目必须放进Windows 注册表中。
对.NET框架而言,运行时实现了这些功能的自动化。
例如,组件本身是自我描述型的,因而无需注册到Windows注册表中便能安装。
.NET与COM+的关系:当把COM与Microsoft事务服务器(MTS)和分布式COM(DCOM)结合在一起时,就变成了COM+。
COM+提供了一组面向中间层的服务。
特别是COM+提供了进程管理功能和数据库与对象连接池处理功能。
在将来的版本中,它还将提供一种称为分区的功能——专门为应用程序服务提供商设计的更强大的进程隔离功能。
COM+服务主要面向中间层应用程序开发,并主要为大型分布式应用程序提供可靠性和可扩展性。
这些服务是对.NET框架所提供服务的补充;通过.NET框架类,可以直接访问这些服务。
周硕0880548。
COM组件技术1 COM组件概述 (3)2 COM组件实例 (3) (3)2.1.1 VC6.0 创建COM组件 (3) (7) (9)2.2.4 使用.Net(VB)调用 (11)2.2.5 使用.Net(C#)调用 (13)2.2 .NET(C#)创建的COM组件及调用过程 (15)2.1.1 C# 创建COM组件 (15) (20) (22)2.2.4 使用.Net(VB)调用 (23)2.2.5 使用.Net(C#)调用 (25)3 佳衡电力抄表Com组件.........................................................错误!未定义书签。
1 COM组件概述COM是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术。
在COM构架下,人们可以开发出各种各样的功能专一的组件,然后将它们按照需要组合起来,构成复杂的应用系统。
COM组件的优点:①可以将系统中的组件用新的替换掉,以便随时进行系统的升级和定制;②可以在多个应用系统中重复利用同一个组件;③可以方便的将应用系统扩展到网络环境下;④COM组件的特性是与语言无关和与平台无关。
因此,一经开发便可以使用不同的高级语言和开发工具调用。
并且,客源在此COM组件基础进行二次开发。
2 COM组件实例本部分将使用VC6.0创建COM组件。
并介绍如何在VC6.0、VB6.0、、C#中调用该COM组件。
2.1.1 VC6.0 创建COM组件1、在VC中新建“A TL COM AppWizard”工程,工程名称为“VCCOMTest”,并确认。
2、在服务器类型中,选择“动态链接库(DLL)”,完成3、选择菜单栏“插入”“A TL对象”,选择“Simple Object”,点击“Next”4、在上面C++“Short Name”后输入“COMTestInVC”,将会自动填充其余选项。
Attributes 部分按默认设置。
什么是COM组件(转)所谓COM,英⽂为Componet Object Model,中⽂为组件对象模型(其实这种解释只有在考试卷上才具有⼀点实际意义)。
【1】为什么需要COM?COM是为了解决OLE问题⽽产⽣的。
COM与OLE的关系类似于微积分与物理的问题。
实际上⽜顿当年就是为了解决物理中的机械及动⼒学问题⽽发明微积分,后来微积分才作为⼀种有效的⼯具被⽤于其它学科之中。
《倚天屠龙记》中张⽆忌当初为了驱除⾝体中⽞魔神掌的寒⽓⽽学习九阳神功,其实他根本不晓得九阳神功随后能帮他解决那么多棘⼿的问题。
【2】COM本质指什么?COM本质是⼀种说明如何建⽴可动态互变组件的规范。
这种规范提供了为保证能够互操作,客户和组件应遵循的⼆进制和⽹络标准。
通过这种标准将可以在任意两个组件之间进⾏通信⽽不⽤考虑其所处的操作环境是否相同、使⽤的开发语⾔是否⼀致以及是否运⾏于同⼀台计算机。
【3】COM规范的作⽤?COM作⽤:提供⼀种独⽴于平台与编程语⾔之外的,共享⼆进制代码的⽅法。
在COM规范下将能够以⾼度灵活的编程⼿段来开发、维护应⽤程序。
可以将⼀个单独的复杂程序划分为多个独⽴的模块进⾏开发,这⾥的每⼀个独⽴模块都是⼀个⾃给⾃⾜的组件,可以采取不同的开发语⾔去设计每⼀个组件。
在运⾏时将这些组件通过接⼝组装起来以形成所需要的应⽤程序。
构成应⽤程序的每⼀个组件都可以在不影响其它组件的前提下被升级。
这⾥所说的组件是特指在⼆进制级别上进⾏集成和重⽤⽽能够被独⽴⽣产获得和配置的软件单元。
COM规范所描述的即是如何编写组件,遵循COM标准的任何⼀个组件都是可以被⽤来组合成应⽤程序的。
⾄于组件采取的是何种编程语⾔则是⽆关紧要的,可以⾃由选取。
作为⼀个真正意义上的组件,应具备如下特征:1. 实现了对开发语⾔的封装。
2. 以⼆进制形式发布。
3. 能够在不妨碍已有⽤户的情况下被升级。
4. 在⽹络上的位置必须能够被透明的重新分配。
这些特征使COM组件具有很好的可重⽤性,这种可重⽤性与DLL⼀样都是建⽴在⼆进制基础上的代码重⽤。
C++COM编程之什么是组件?什么是组件?一个组件同一个微型应用程序类似,即都是已经编译、链接好并可以使用的了,应用程序就是由多个这样的组件打包而得到的。
各定制的组件可以在运行时同其他组件连接起来以构成某个应用程序。
在需要对应用程序进行修改或改进时,只需要将构成此应用程序的组件中的某个用新的版本替换掉即可。
COM组件COM,即组件对象模型,是一个说明如何建立可动态互变组件的规范,它提供了为保证能够互操作,客户和组件应遵循的一些标准。
COM组件是以Win32动态链接库(DLLs)或可执行文件(EXEs)的形式发布的可执行代码。
COM组件必须满足以下条件:组件是完全与语言无关的;组件可以以二进制的形式发布;组件可以在不妨碍老客户的情况下被升级;COM组件可以透明的在网络上被重新分配位置。
使用组件的优点1.应用程序定制组件架构从本质上讲就是可被定制的,因用户可以用更能满足他们需要的组件来将某个组件替换掉;2.组件库组件架构最引人注目的优点之一是快速应用程序开发。
这一优点可以使开发人员从某个组件库中取出所需要的组件并将其快速地组装到一块以构造所需的应用程序,如同搭积木块一样;3.分布式组件组件架构可以使得开发这类分布式应用的过程得以简化。
实际上,客户机/服务器式的应用就是向组件架构跨出的第一步。
在那里整个应用程序被分成两部分:客户机部分及服务器部分。
总结COM提供了编写组件的一个标准方法。
遵循COM标准的组件可以被组合起来以形成应用程序。
至于这些组件是谁编写的、如何实现的都是无关紧要的。
每一个COM组件均可同其他组件一起使用。
实现这种可动态改变组件的关键问题是信息的封装。
对于封装,COM是通过组件和客户之间的连接或接口来实现的。
对于接口,我下篇博文进行总结。