首页 > 生活百科 > 减肥方法 > com什么意思

com什么意思

时间:2018-01-20   来源:减肥方法   点击:

【www.gbppp.com--减肥方法】

com什么意思 第一篇_什么是COM组件

什么是COM组件

来源:互联网 酷勤网收集 2008-10-06

摘要

酷勤网

COM是开发软件组件的一种方法。组件实际上是一些小的二进制可执行程序,它们可以给应用程序,操作系统以及其他组件提供服务。开发自定义的COM组件就如同开发动态的,面向对象的API。多个COM对象可以连接起来形成应用程序或组件系统。

COM是Component Object Model (组件对象模型)的缩写。

用户需要什么样的软件产品?这是一个多选题,但高效,健壮是肯定会被选种的。作为一名软件开发人员如何做才能满足用户的需要呢?必须要保证升级应用时不破坏与以前版本的向后兼容性。必须做到扩展系统服务时不依赖特定的操作系统。面向对象的程序设计显然是一次革命性的改变。采用面向对象的设计方法我们可以很容易的把要解决的问题事物抽象成各种类,并将内部动作封装隐藏起来,只提供一些接口。但这并没有完全解决我们的问题。昨天我在《程序员》杂志上看到,现在是后OO时代,那OO以后是什么呢?应该是面向组件吧。

COM component(COM组件)

COM是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术。在COM构架下,人们可以开发出各种各样的功能专一的组件,然后将它们按照需要组合起来,构成复杂的应用系统。由此带来的好处是多方面的:可以将系统中的组件用新的替换掉,以便随时进行系统的升级和定制;可以在多个应用系统中重复利用同一个组件;可以方便的将应用系统扩展到网络环境下;COM与语言,平台无关的特性使所有的程序员均可充分发挥自己的才智与专长编写组件模块;等等。

COM是开发软件组件的一种方法。组件实际上是一些小的二进制可执行程序,它们可以给应用程序,操作系统以及其他组件提供服务。开发自定义的COM组件就如同开发动态的,面向对象的API。多个COM对象可以连接起来形成应用程序或组件系统。并且组件可以在运行时刻,在不被重新链接或编译应用程序的情况下被卸下或替换掉。Microsoft的许多技术,如ActiveX, DirectX以及OLE等都是基于COM而建立起来的。并且Microsoft的开发人员也大量使用COM组件来定制他们的应用程序及操作系统。

COM所含的概念并不止是在Microsoft Windows操作系统下才有效。COM并不是一个大的API,它实际上象结构化编程及面向对象编程方法那样,也是一种编程方法。在任何一种操作系统中,开发人员均可以遵循“COM方法”。

一个应用程序通常是由单个的二进制文件组成的。当编译器生成应用程序之后,在对下一个版本重新编译并发行新生成的版本之前,应用程序一般不会发生任何变化。操作系统,硬件及客户需求的改变都必须等到整个应用程序被重新生成。

目前这种状况已经发生变化。开发人员开始将单个的应用程序分隔成单独多个独立的部分,也既组件。这种做法的好处是可以随着技术的不断发展而用新的组件取代已有的组件。此时的应用程序可以随新组件不断取代旧的组件而渐趋完善。而且利用已有的组件,用户还可以快速的建立全新的应用。

传统的做法是将应用程序分割成文件,模块或类,然后将它们编译并链接成一个单模应用程序。它与组件建立应用程序的过程(称为组件构架)有很大的不同。一个组件同一个微型应用程序类似,即都是已经编译链接好并可以使用的二进制代码,应用程序就是由多个这样的组件打包而得到的。单模应用程序只有一个二进制代码模块。自定义组件可以在运行时刻同其他的组件连接起来以构成某个应用程序。在需要对应用程序进行修改或改进时,只需要将构成此应用程序的组件中的某个用新的版本替换掉即可。

COM,即组件对象模型,是关于如何建立组件以及如何通过组件建立应用程序的一个规范,说明了如何可动态交替更新组件。

使用组件的优点:

组件架构的一个优点就是应用可以随时间的流逝而发展进化。除此之外,使用组件还有一些可以使对以有应用的升级更加方便和灵活的优点,如应用的定制,组件库以及分布式组件等。 使用组件的种种优点直接来源于可以将它们动态的插入或卸出应用。为了实现这种功能,所有的组件必须满足两个条件:第一,组件必须动态链接;第二,它们必须隐藏(或封装)其内部实现细节。动态链接对于组件而言是一个至关重要的要求,而消息隐藏则是动态链接的一个必要条件。

补充:COM组件由以Win 32动态连接库(DLL)或可执行文件(EXE)形式发布的可执行代码所组成。遵循COM规范编写出来的组件将能够满足对组件架构的所有要求。COM组件可以给应用程序、操作系统以及其他组件提供服务;自定义的COM组件可以在运行时刻同其他组件连接起来构成某个应用程序;COM组件可以动态的插入或卸出应用。

恶意网站可以利用含有漏洞的com组件接口,下载木马,并且执行;

禁用com组件一般是指设置了Kill位,即IE浏览器不能使用这个组件,通俗讲:通过设置Kill位,可以使InternetExplorer在使用默认设置时永不调用被禁用的com组件,从而禁止该控件在Internet Explorer中运行。禁用含有漏洞的com组件后,IE就不能调用含有漏洞的COM组件;黑客利用有漏洞的COM组,写成的网页代码就不能在IE中被执行,木马等将不会被下载。 禁用com组件可能导致的问题:

在线播放功能的组件被禁用,会导致在线电影等在线视频无法正常观看;

在线杀毒功能的组件被禁用,会导致在线杀毒不能使用;

在线游戏功能的组件被禁用,会导致在线游戏无法玩,

com组件禁用后的具体情况,需要根据具体的com组件功能作判断。

手动启动COM组件操作方法:

运行——regedit——找到被禁用的com组件对应的clsid|注册表键值——删除具体值,或者整个键。

刚刚读完《COM技术内幕》一书,整理了一个FAQ,供大家在学习此书时参考。

这是第一部分,包含前3章的内容。

FAQ1:什么是COM组件?〖第一章〗

Answer:

COM组件是以WIN32动态链接库(DLL)或可执行文件(EXE)形式发布的可执行代码组成。 COM组件是遵循COM规范编写的

COM组件是一些小的二进制可执行文件

COM组件可以给应用程序、操作系统以及其他组件提供服务

自定义的COM组件可以在运行时刻同其他组件连接起来构成某个应用程序

COM组件可以动态的插入或卸出应用

COM组件必须是动态链接的

COM组件必须隐藏(封装)其内部实现细节

COM组件必须将其实现的语言隐藏

COM组件必须以二进制的形式发布

COM组件必须可以在不妨碍已有用户的情况下被升级

COM组件可以透明的在网络上被重新分配位置

COM组件按照一种标准的方式来宣布它们的存在

FAQ2:组件不是„„?〖第一章〗

Answer:

COM组件不是一种计算机语言

COM组件不是DLL,只是利用DLL来给组件提供动态链接的能力

COM组件不是一个API函数集。

COM组件不是类

FAQ3:什么是接口?〖第二章〗

Answer:

接口就是提供两个不同对象间的一种连接。

计算机程序是通过一组函数而进行连接的,这组函数就是定义了程序中不同部分的接口。 DLL的接口就是它所输出的那些函数。

C++类的接口就是该类的成员函数集。

COM中的接口是一组由组件实现的提供给客户使用的函数。

在COM中接口是一个包含函数指针数组的内存结构,数组元素是一个由组件实现的函数地址。

FAQ4:接口的作用是什么?〖第二章〗

【com什么意思】

Answer:

有了组件如何将它们连接起来构成某个应用程序,需要用接口。

在COM中接口就是一切,对客户说组件就是接口集,客户只能通过接口和组件打交道。 说明接口可以保护系统免受外界变化的影响。这是封装的体现。

接口实现了使用户使用同样的方式来处理不同的组件。这是多态的体现。

FAQ5:什么是IUnKnown? 〖第三章〗

Answer:

IUnKnown是一个接口。

所有COM接口都继承IUnKnown。

IUnKnown的定义在WIN32 SDK中的UNKNWN头文件中。

///IUnKnown的定义

interface IUnKnown

{

virtual HRESULT __stdcall QueryInterface(const IID& iid,void **ppv)=0; virtual ULONG __stdcall AddRef()=0;

virtual ULONG __stdcall Release()=0;

}

FAQ6:QueryInterface函数的作用是什么?〖第三章〗

Answer:

QueryInterface是IUnKnown的成员函数,客户可以通过此函数来查询组件是否支持某个特定的接口。

QueryInterface函数返回一个指向组件支持的接口的指针。

如果QueryInterface函数没有找到组件支持的接口则返回指针是NULL。

QueryInterface函数可以使用if„then„else语句、数组、散列表、树来实现。

QueryInterface函数不能使用case语句,因为QueryInterface函数返回的是一个HRESULT结构而不是一个数。

QueryInterface也是一种无封处理组件版本的机制。这种机制使得组件的新旧不同的版本可以互操作。

FAQ7:QueryInterface函数的实现规则是什么?〖第三章〗

Answer:

QueryInterface返回的IUnKnown指针总是相同。

若客户获得了某个接口,那么它总能获得此接口。

com什么意思 第二篇_什么是COM

1.

简单来说,COM是一类系统应用程序接口(API),它允许你的应用程序访问其他应用程(EXE)或动态链接库(DLL)中的数据和函数。

它事实上提供了一种C/S标准。

COM是Component Object Model的简称,其基本思想是试图像搭建计算机硬件设备那样搭建软件。【com什么意思】

2. C++如何使用COM

(1) 调用 COM API 接口::CoCreateInstance()。

(2) 在系统注册表中记录

(3) 装载DLL,或者通过远程过程调用API启动相应的EXE文件。

(4) 在创建对象后,::CoCreateInstance()返回该对象的指针。

(5) 使用通过指针

(6) 消灭则引用计数-1,为0则COM真的消灭对象。

(7) 释放资源,如DLL

3.什么是GUID

【com什么意思】

开放软件组织OSF提出了统一唯一标识UUID, GUID是微软公司对此的解释。一个GUID是一个128位长的数,从理论上说在整个空间和时间维上它是唯一的。为了保证它在空间维上唯一,GUID中有一些特定的位来记录它是由哪个机器产生的,它通常是该机器的网卡地址,如果这台机器上没有网卡,会使用另一个常数。

为了保证在时间维上唯一,GUID包含了一个时间戳,用来记录它生成的时间。这个时间戳的范围是从1490年开始到生成该GUID时的时间为止,以分钟为单位。

另外,GUID还包含了一个随机产生数。

GUID的格式为:

rrrrrrrr-tttt-tttt-oooo-aa-aa-aa-aa-aa-aa

其中:

rrrrrrrr: 32位长的随机数

tttt-tttt: 时间戳,其中低16位字在前;

oooo: 与机器重启次数有关

aa-aa-aa-aa-aa-aa: 一个6字节长的字符串,一般是机器的网卡地址

4.

创建一个COM对象时需要两个ID

(1) 类ID -- CLSID, 用来表示DLL或EXE文件

(2) 接口ID – IID, 用来指示所要创建的对象的类。

5.系统注册表

【com什么意思】

(1)COM的信息可以在系统注册表中的HKEY_CLASSES_ROOT键下找到,这个键其实指向的是HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES键下的内容。

大部分是扩展名和实际应用程序的对应,也有:

AppId

CLSID—128 bits Key

Interface IID -- 128 bits Key

6 利用COM进行通信

7. COM术语

(1) 把COM DLL称为,在进程中。

(2) 把COM EXE称为,在进程外。

(3) 把本地系统执行的COM EXE称为, 本地服务器

(4) 把在别的系统里执行的COM EXE称为, 远程服务器 ---- DCOM,分布式COM技术。

8.怎样消灭COM对象

(1)引用计数,目的是让对象能够自己维护自己,在通知销毁时,判断是不是该释放资源。

(2)但是如果调用进程终止,COM也会销毁被该进程调用的COM对象。

9.怎样用C++写一个 COM类

(1)对于COM类,要把成员定义在一个叫做 ---- 接口定义语言 IDL,的地方。

(2)

MyInterface的IDL编译后产生:

MyInterface.h

MyInterface_i.c

MyInterface_p.c

dlldata.c

MyInterface.tlb

10.使用MFC或者ATL来创建COM类

11.什么是服务控制器

com什么意思 第三篇_以租代购是什么意思

以租代购是什么意思

什么是以租代购

“汽车租上两年,这辆车就归你了。”商家如此的承诺,相信对很多消费者都有一定的杀伤力。这听来似乎有些不靠谱的事情,如今成了一种全新的汽车消费模式。

“在通过资质审核的前提下,你只要支付相当于车价20%的保证金,就可以租赁的方式开走一辆车。一旦租赁期达到规定年限,这辆车的所有权就归你了,之前收取的保证金也将如数退还。”北京捷翊客服人员小玲向一位消费者详细解释着这项最新开展的“以租代购”业务。

近年来,随着汽车市场竞争的日益激烈,各大汽车品牌的制造商和经销商都在拓展自己产品的营销渠道。于是,一种名为“以租代购”的汽车融资业务开始在北京、上海、成都等大中城市悄然现身。

以租代购是以汽车租赁为基础,以车辆产权转移为目标的一种租赁模式。经销商或汽车租赁公司会按照客户指定的车型购进新车,并与客户签订长期租赁协议,根据协议在客户租用一定的期限后,将车辆的产权转让给客户。这样一种新营销模式的适用人群、适用车型,以及优劣之处进行了分析。

“汽车以租代购”PK“分期按揭”

如果以全款一次付清的方式,在该店购买一辆奔驰C180标准型轿车,消费者需要一次性付款30.8万元,并支付约2.65万元购置税,累计约33.45万元。如果算上三年的使用成本——约3.5万元的保险费、3.55万元的保养费(按每年3万公里计算),以及1440元的车船使用税,购车加三年使用,共计需要花费约40.6万元。

如果以分期按揭方式购买此车,消费者需首付车款的30%,即9.24万元,以及2.65万元购置税。在日后三年时间里,每月还款约7000元,36个月累计约为25.2万元。再算上三年的保险、保养和车船使用税等使用成本,购车加使用三年,共计需要花费约44.3万元。

而若按以租代购方式购买此车,消费者需先行交付相当于车价30%的保证金,即9.24万元,之后三年按每月1.25万元向商家支付租赁费,而购置税和各项作用成本,则全部包含在每月的租赁费中。待三年租期满时,商家将退还9.24万元保证金,并将车辆过户到消费者名下。这样算下来,消费车将为拥有这辆奔驰花费约45万元。

汽车以租代购好处多

通过详细计算我们不难发现,选择以租代购的方式购车,与分期按揭的总花费大体相当。但一些业内人士则认为,与传统按揭购车相比,以租代购更为灵活。

将车款、购置税、车船税、上牌费、保险费、保养费等各种费用计入租赁成本进行分期支付,这不但节省了购车的一次性投入,而且分摊了车辆的使用成本,从而降低了购车和用车的门槛。汽车市场资深专家苏晖也认为,以租代购模式不仅丰富了市场层次,也为消费者提供了多样选择。“对于喜欢尝试不同新车和追求个性用车的消费者来说,新鲜感过后可以退租,避免了资源的闲置。”同时,以租代购还能满足不同消费群体的需求,更有利于用户有效使用资金。

据中国汽车流通协会副秘书长罗磊介绍,在西方发达国家,以租代购是一种非常普及的汽车营销手段。“目前美国采用‘以租代购’方式售出的汽车达到了汽车销量的35%,日本每年的汽车租赁销售规模为200多万辆,约占全国新车销售量的15%,而德国以这种方式销售的汽车则占本土汽车市场近五成。”罗磊告诉记者。

消费观念有待培养

国外如此盛行的汽车消费模式,在国内的起步又是否顺利呢?不过在采访中记者发现,中国消费者似乎不太愿意买以租代购的账。“我开出去一辆奔驰,当朋友们恭喜我买新车时,我却告诉人家车是租的,这多掉价?”北京消费者韩先生的一席话道破了以租代购不受宠的真正原因。“与西方人不同,中国人买车强调所有权。”罗磊认为,“开的车还不属于自己”的心理在很大程度上阻碍了汽车以租代购模式在国内的发展。

关于捷翊租赁

北京捷翊汽车租赁有限责任公司(以下简称捷翊租赁)成立于2015年6月,总部位于

北京,服务遍布北京、广州、深圳、天津、杭州、贵阳、哈尔滨、沈阳、石家庄、济南、武汉、长沙、南京、合肥、郑州、南昌、太原、成都、重庆、西安、大连、青岛、海口、昆明、厦门等全国主要城市。

捷翊租赁专注于汽车融资租赁、经营性租赁,专注于服务个人、企业、政府机关、互联网租车平台、汽车租赁公司、汽车后市场用户,公司本着简单、高效的服务理念,为客户提供 “不限车型”、”不限地区”、”低首付”、”低利率”、”低门槛”的服务方案。

灵活的服务方案,遍布全国的服务网络,全新的服务理念,不断完善的服务体系,是捷翊租赁不懈努力的方向,客户的需求是捷翊租赁永远创新的动力,良好的客户体验是捷翊租赁展翅高飞的翅膀!

展望未来,捷翊租赁将创新与承诺并重,以品牌化及标准化服务惠及广大客户群体。

以租代购买车好处

首付太多,跟全款买车有什么区别!?没有车牌,有车有什么卵用!没车没牌,我的汽车梦什么时候实现!!!!

炎夏上班挤公交、挤地铁——太狼狈!周末出玩打车,租车——花费也不少!

告别种种不堪,分分钟做有车一族!!!!

捷翊租赁推出

零首付、无需摇号购车行动

不限车型,5座城市同步招募

这个炎夏可以在车里和空调君一起飞奔去上班啦

零首付 真的可以零首付,零首付,零首付!重要的事情说三遍

上车牌 你想上哪儿的车牌都可以,sorry国外的目前办不到【com什么意思】

不限车型 奔驰、宝马、路虎、丰田,不设限,圆你汽车梦

五城同步 北京、天津、杭州、广州、深圳,你在这五个城市吗,那你太幸福了,你摊上好事儿了!!

快快报名吧,立刻圆你“购车梦”

你买车,我付款?

即汽车租赁客户首先缴纳一定额度的保证金,然后逐月支付租金,待租期满两年后,结算尾款,并将车辆过户客户。

流程简单

我们的优势

l 低门槛,可以轻松购买车辆,实现更多客户拥有车辆的梦想;

l 解决号牌问题,无购车指标的客户,可以快速拥有当地车牌车辆,为客户生活增加便利;

com什么意思 第四篇_COM组件简介

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则表现出了极强的适应能力。

COM标准包括规范和实现两大部分,规范部分定义了组件和组件之间通信的机制,这些规范不

依赖于任何特定的语言和操作系统,只要按照该规范,任何语言都可以使用; COM标准的实现部分是COM库,COM库为COM规范的具体实现提供了一些核心服务。

COM是面对对象的软件模型,因而对象是他的基本要素之一。类似于C++中对象的概念,对象是某个类(class)的一个实例;而类则是一组相关的数据和功能组和在一起的一个定义。使用对象的应用(或另一个对象)成为客户,有时也成为对象的用户。

接口是一组逻辑上相关的函数集合,其函数也被称为接口成员函数。对象通过接口成员函数为客户提供各种形式的服务。

在COM模型中,对象本身对于客户来说是不可见的,客户请求服务时,只能通过接口进行。每一个接口都由一个128位的全局唯一标识符(GUID,Globally Unique Identifier)来标识。客户通过GUID获得接口的指针,在通过接口指针,客户就可以调用其相应的成员函数。

一般来说,接口是不变的,只要客户期望的接口在组建对象中还存在,它就可以继续使用该接口所提供的服务。对象可以支持多个接口,因此对组件对象的升级可通过增加接口的办法实现,这样得到的新接口可以不影响老接口的使用。

客户如何来标识COM对象呢?与接口类似,每个对象也用一个128位GUID来标识,称为CLSID(class identifier,类标识符或类ID),用CLSID标识对象可以保证(概率意义上)在全球范围内的唯一性。

只要系统中含有这类COM对象的信息,并包括COM对象所在的模块文件(DLL或EXE文件)以及COM对象在代码中的入口点,客户程序就可以由此CLSID来创建COM对象。

那么客户怎么使用COM对象所提供的服务呢?客户获得的又是什么呢?

实际上,客户成功创建对象后,它得到的是一个指向对象某个接口的指针,因为COM对象至少实现一个接口,所以客户就可以调用该接口提供的所有服务。

但是COM对象可以有自己的状态,正是这种状态才使客户感觉到COM对象的存在。如果客户同时拥有两个相同CLSID的对象,则两个对象可以有不同的状态,客户完全不必关心COM对象是怎么实现的,以及两个对象的状态数据之间有什么关系(数组或者链表)。当然,COM对象也可以是无状态的,这种COM对象以提供功能服务为主,可以用来代替传统的API函数接口,使得应用程序编程接口更为有序,组织层次性更强。

COM本身除了规范之外,也有实现的部分,其中包括一些核心的系统级代码,也正是这部分核心代码,才使得对象和客户之间可通过接口在二进制代码级进行交互 。

在Microsoft Windows操作系统环境下,这些库以.dll文件的形势存在,其中包括以下内容:

(1) 提供了少量的API函数实现客户和服务端COM应用的创建过程。在客户端,主要是一些创建函数;而在服务器端,提供一些对象的访问支持。

(2) COM通过注册表查找本地服务器即EXE程序,以及程序名与CLSID的转换等。

(3) 提供了一些标准的内存控制方法,使应用控制进程中内存的分配。

COM库一般不在应用程序层实现,而在操作系统层次上实现,因此一个操作系统只有一个COM库实现。而且COM库的实现必须依赖于具体的系统平台,尤其是系统底层的一些标准。

COM库可以保证所有的组件按照统一的方式进行交互操作,而且它使我们在编写COM应用时,可以不用编写为进行COM通信而必需的大量基础代码,而是直接利用COM库提供的API进行编程,从而大大加快了开发的速度。例如,现在COM库的版本都支持远程组件即分布式COM,我们不用编写任何网络或者RPC(remote procedure call)的代码,就可以实现在网络上进行程序之间的通信。

如果我们用面向对象语言来实现COM对象,则很自然可以用类类定义对象。在C语言中,对象的概念可能变成一个逻辑概念,如果两个对象同时存在,则在接口实现中必须明确知道所进行的操作是针对哪个对象的,这个过程可由COM接口的定义保证。

COM规范使用GUID来标识COM对象的思想源于OSF(Open Software Foundation)采用的UUID(Universallz Unique Identifier), UUID被定义为DCE(Distributed Computing Environment)的一部分,主要用于表识RPC通信的双方。

除了封装性和重用性,C++对象还有一个重要特性是多态性。正是C++对象的多态性,才体现了C++语言用类描述事物的高度抽象的特征;COM对象也 具有多态性,但这种多态性需要通过COM对象所具有的接口才能体现出来,就像C++对象的多态性需要通过其(virtual)函数才能体现一样。

从API到COM接口

假如我们要实现一个字处理应用系统,它需要一个查字典的功能,按照组件化程序设计的方法,自然应该把查字典的功能放到一个组件(.dll)程序中实现。如果以后字典程序的查找算法或者字典库改变了,只要应用程序和组件之间的接口不变,则新的组件程序仍然可以被应用系统使用。这就是采用组件程序带来的灵活性。

为了把应用系统和组件程序连接起来,又能使它们协同工作,最简单的做法就是先定义一组查字典的函数,而且这组函数尽可能一般化,不要加入特定的与字典库相关的知识。

函数

功能说明

Initialize

初始化

LoadLibrary

装入字典库

InsertWord

插入一个单词

DeleteWord

删除一个单词

LookupWord

查找单词

RestoreLibrary

把内存中的字典库存入指定的文件中

FreeLibrary

释放字典库

平面型的API接口层可以很好地把两个程序连接起来,但存在以下一些问题:

(1) 当API函数非常多时,使用会非常不方便,需要对函数进行组织。

(2) API函数需要标准化,按照统一的调用方式进行处理,以适应不同的语言编程实现。参数的传递顺序,参数类型,寒暑返回处理都需要标准化。

COM定义了一套完整的接口规范,不仅可以弥补以上API作为组件借口的不足,还充分发挥了组件对象的优势,并实现了组件对象的多态性。

接口定义和标识

从技术上讲,接口是包含了一组函数的数据结构,通过这组数据结构,客户代码可以调用组件对象的功能。接口定义了一组成员函数,这组成员函数是组件对象暴露出来的所有信息,客户程序利用这些函数或的组件对象的服务。

客户程序用一个指向接口数据机构的指针来调用接口成员函数。接口指针实际上又指向另一个指针,这第二个指针指向一组函数,称为接口函数表(虚函数表),接口函数表中每一项为4个字节长的函数指针,每个函数指针与对象的具体实现连接起来。通过这种方式,客户只要获得了接口指针,就可以调用到对象的实际功能。

对于一个接口来说,他的虚函数表vtable是确定的,因此接口的成员函数个数是不变的,而且成员函数的先后顺序也是不变的;对于每个成员函数来说,其参数和返回值也是确定的。

在一个接口的定义中,所有这些信息都必须在二进制一级确定,不管什么语言,只要能支持这样的内存结构描述,也就是能够支持“structure“或“record“类型,并且这种类型能够包含双重的指向函数指针表的成员,则它就可以支持接口的描述,从而可以用于编写COM组件或者使用COM组件。

接口描述语言IDL

COM规范在采用OSF的DCE规范描述远程调用接口IDL的基础上,进行扩展形成了COM接口的描述语言。

COM规范使用的IDL接口描述语言不仅可用于定义COM接口,同时还定义了一些常用的数据类型,也可以描述自定义的数据结构,对于接口成员函数,我们可以指定每个参数的类型,输入输出特性,甚至支持可变长度的数组的描述。IDL支持指针类型,与C/C++很类似。

Microsoft Visual C++提供了MIDL工具,可以把IDL接口描述文件编译成C/C++兼容的接口描述头文件(.h)。

IUnknown的定义(IDL):

interface IUnknown

{

HRESULT QueryInterface([in] REFIID iid, [out] void **ppv);

ULONG AddRef(void);

ULONG Release(void);

}

IUnknown的定义(C++):

class IUnknown

{

Public:

virtual HRESULT _stdcall QueryInterface([in] REFIID iid, [out] void **ppv)=0;

com什么意思 第五篇_EVT、DVT、PVT是什么意思

BVT是Build Verification Test,基本验证测试,对完成的代码进行编译和连接,产生一个构造,以检查程序的主要功能是否会像预期一样进行工作。

DVT是Design Verification Test的简称,设计验证测试,是硬件生产中不可缺少的一个检测环节,包括模具测试、电子性能、外观测试等等。

PVT全称为Process Verification Test,意为小批量过程验证测试,硬件测试的一种,主要验证新机型的各功能实现状况并进行稳定性及可靠性测试

EVT-Engineer Verification Test,工程样品验证测试

PVT:Power vs Time,another name of Time Mask,Power Template,etc

PR 1:Pre-Run 1 or Pilot-Run 1

PR 2:Pre-Run 2 or Pilot-Run 2

PR 3:Pre-Run 3 or Pilot-Run 3

Pilot-Run:试产(Pi-R)

SA:Ship Acceptment,SA就意味着可以量产、产品和方案验收合格

Pre-Run和Pilot-Run的区别,Pre-Run时间更靠前一些,Pilot-Run更靠近量产

产品定义(EVT)、产品设计(DVT),到定型测试(PVT)三大阶段的系统化产品研发流程

EVT:Engineering Verification Test 工程验证测试

DVT:Design Verification Test设计验证测试。

MVT :Mass-Production Verification Test 量产验证测试

MP:Mass-Production 量产 W\u019^11L*M

電子組裝業新產研發?程常用名詞對照表

研發階

本文来源:http://www.gbppp.com/sh/411988/

推荐访问:cn什么意思 rfid什么意思

热门文章