- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
COM程序设计模型
COM+程序设计模型
Mary Kirtland
COM+组件使得用任何程序语言开发基于COM的组件和应用程序变得更容易。可以通过定义一组标准类型,以及让所有组件具有自我描述的能力来实现这样的功能。这种方式可以确保COM+感知(COM+ aware)的程序语言和开发工具访问所有COM+兼容的系统服务和组件。此外还简化了组件的发布,并且应用程序可以很容易地使用它。COM+使得COM程序设计模型更类似你所使用的程序设计模型。你可以使用最喜爱的程序语言设计类,你所使用的工具以及COM+运行时将帮你将这些类转换为COM组件和应用程序
为了能充分发挥COM+组件的优势,以及让现存的COM组件移植为COM+组件,你必须了解COM+程序设计模型。在简短描述了COM+模型之后,我们将提供一些使用这个模型来开发组件的指导。
设计COM+组件的一个困难就是它确实是语言中立(Language-neutral)的。COM+不会在意你使用什么样的语法来创建组件,这只和你使用的开发工具有关,而COM+只在意开发工具所能识别的语法必须能够表示出COM+组件所要完成的工作。不论使用何种程序语言,程序设计模型的概念都是相同的,但是表示的方式却不同。在这篇文章之中,我们将使用 COM+ SDK所提供的C++编译器所能识别的语法来展示所要讨论的概念。你可以查阅开发工具文件,了解所提及的特殊语法支持。
注意:在文章发表的时候,COM+和COM+ SDK都尚未正式上市, 所以详细资料可能会有所不同。
撰写组件
询问五个人什么是组件,你可能会得到五个不同的答案。当笔者谈到组件时,指的是在执行阶段具有提供特定类型对象服务能力的一段程序代码,组件应该可以在大多数对象程序设计语言中以类的形式创建。客户端应该可以用该程序语言的特性来创建一个新的对象, 或是继承已有的类。例如,在一个POS应用程序中,你可能有CashierDisplay、CustomerDisplay、CashDrawer、BarcodeScanner和CashierKeypad这些类来描述Register的元素,这个Register类的逻辑看起来像是这样:
Boolean Register::Initialize ()
{
m_pCashDrawer = new CashDrawer();
m_pBarcodeScanner = new BarcodeScanner();
m_pCashierKeypad = new CashierKeypad();
· · ·
}
COM是一个系统层次的组件模型,这个模型无法依赖语言层所提供的特性来建立对象。因此,COM组件有些复杂;除了类之外, 一个组件中必须包含类工厂(Class factory) 来建立新的对象,以及类型库来描述由组件延伸出来的类和接口,因此除了CashDrawer之外, 你必须要有CashDrawerClassFactory等类。
COM+企图使得COM组件的开发能够更像语言特定(Language-specific)的组件开发。不论你使用什么程序语言或工具,都可以撰写一个类。笔者将称呼COM+类为共同类 (coclass),用以与语言特定的类相区别。在大部分情况下, 你不必撰写一个Class Factory,COM+运行时将自动提供给。你也不必建立一个类型库。COM+感知语言和工具将会在COM+运行时生成元数据(metadata),以完整的描述共同类。你可以将元数据想象成与类型库类似。
那么到底程序设计模型又是怎样呢?写一个共同类就算完成了吗? 没那么简单吧。首先, 记住我们可以用任何COM+感知的程序语言或工具来设计COM+组件。这样的弹性使得我们只要将注意力集中在共同类是如何创建的即可,你可能无法使用到所惯用的程序语言的所有最新功能来创建一个共同类,你甚至会发现有些新功能已经被加到了程序语言的规格中,以方便你创建一个共同类,因此只有一件事你必须看清楚,那就是以什么方法来编写共同类,就如同相对应于你所要撰写的其它类型的类一样,有一些工具, 如COM+ SDK C++编译器 可以让你定义共同类和类。而在其它工具中,所有类会自动成为共同类。
其次, 如同笔者在COM+运行时服务简化对象向导的软件开发一书中所提到的(MSJ, 1997年12月),COM+提供了许多标准的服务。在一些这样的服务中,不仅可以使用自己的开发工具,其它组件也可以访问它们。其中有一项服务可以处理类实例的并发访问。另一个服务则提供了事务的支持,因此必须清楚的另一件事就是,如何从自己的共同类中访问COM+服务。COM+采取的是调用基于属性的、或是说明性的程序设计方式,这点与你以前所用的设计方式有些不同。
COM+类
图例1显示了BarcodeScanner1的COM+类的定义(这段
您可能关注的文档
- cad做块的技巧.doc
- CAD图层设置教案.doc
- CAD剖面图绘制教案.doc
- CAD图纸在WordWps中的复制粘贴方法.doc
- CAD常见问题汇总与解决方法.doc
- cad常见问题块比例问题归纳.doc
- CAD标注粗糙度的方法1.doc
- CAD标题栏,粗糙度绘制.doc
- CAD经典教程第9章图块的应用.doc
- CAK13(B)变速箱润滑存在的弊端与对策.doc
- 2025版二手房屋个人买卖合同书(含税费).docx
- 2025版二手房装修工程验收与保修合同范本.docx
- 2025版二手房售卖合同(含房屋结构安全检测).docx
- 2025版二手房售卖合同(含邻里关系和谐保障).docx
- 2025版二手房售卖合同(含房屋结构安全检测).docx
- 高中数学北师大版必修2《第2章 1 1.2 第2课时 直线方程的两点式和一般式》课件.pptx
- 2025版二手房装修工程款支付与工程进度管理合同.docx
- 2025版二手房装修工程验收与交付合同范本.docx
- 2025版二手房卖房协议,附带房屋租赁权及租赁期满续约协议.docx
- 2025版二手房分期付款购房合同范本解读.docx
文档评论(0)