第2章 COM与数据库访问.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第2章 COM与数据库访问 2.1 COM的基本原理 COM即组件对象模型,是一种以组件为发布单元的对象模型,这种模型使各种软件组件可以通过一种通用的方式进行交互。COM既提供了组件之间进行交互的规范,也提供了实现交互的环境,因为组件对象之间交互的规范不依赖于任何特定的语言,所以COM也可以是不同语言协作开发的一种标准。 也许读者对OLE(对象链接嵌入,Object Linking and Embedding )不太陌生,OLE技术也是以COM技术为基础的。OLE充分发挥了COM标准的优势,使Windows操作系统上的应用程序具有非常强大的可交互性。如果没有OLE的支持,Windows操作系统一定逊色许多。但是COM规范并不局限于OLE技术,实际上,OLE技术只是COM的一个应用而已,近年来网络技术迅猛发展,OLE技术在进行网络互联时表现出很大的局限性,而COM则表现出了很好的适应能力,因此,伴随着网络技术的发展,COM也得到了很好的展示机会。继OLE技术之后,微软又推出了一系列以COM为基础的技术,即ActiveX技术,再一次展示了COM的价值。 2.1.1 COM历史 微软起初并没有意料到COM的强劲发展势头,最初微软在桌面窗口系统里使用了OLE,随着桌面窗口应用程序之间交互的不断深入,微软将OLE发展成为COM,而后来COM技术的不断发展表明,COM所定义的组件标准其广泛性远远超过了OLE所具有的能力。 其实一开始COM就具有很好的应用前景,但是由于OLE技术的复杂性,一般人很少能窥探到OLE的底层,尤其是通过OLE学习COM本来就是本末倒置,所以可以这样说,是OLE阻碍了COM的发展,甚至是OLE的一些缺点掩盖了COM的优势。但是这种情况很快有了好转,人们认识到了COM是符合当前软件发展需要的很好的组件标准,使用COM进行软件构造是一种理想的应用方案。COM脱离了OLE之后得到了很大的发展,现在COM已经遍布于微软的各种软件中了。 组件化软件结构为我们带来了极大的好处,首先是软件升级的灵活性,每个组件可单独开发,单独升级,甚至单独调试和测试,只要组建的接口不变,组件的升级不会影响到软件的其它部分。其次,COM是一种面向对象的组件模型,COM对象以接口的方式提供服务,我们统称之为COM接口。 从COM在OLE2中首次作为底层技术使用以来,COM已经走过了六、七年时间,而且日益壮大,成为广为接受的软件组件模型。 2.1.2 COM结构 COM为组件和应用程序之间提供了进行通信的统一标准,为组件程序提供了一个面向对象的活动环境。COM标准包括规范和实现两大部分,规范部分定义了组件和组件之间通信的机制,这些规范不依赖于任何特定的语言和操作系统,只要遵循该规范,任何语言都可以作为组件开发的原始语言;COM标准的实现部分是COM库,COM库为COM规范的具体实现提供了一些核心服务。图2-1表示了COM组件、COM对象与COM接口三者之间的关系。 图2-1 COM组件、对象与接口三者之间的关系 COM是面向对象的软件模型,对象是它的基本要素之一。COM对象有些类似于C++中对象的概念,对象是类的一个实例。COM接口是一组逻辑上相关的函数集合,通常的COM接口都是以字母“I”作为前缀,例如IUnknown接口,对象通过接口成员函数为客户提供各种形式的服务。在COM模型里,对象对于使用组件的用户来说是透明的,客户请求服务时,只能通过接口进行。COM的每个接口都由一个128位的全局标识符(GUID,Globally Unique Identifier)来标识,客户通过GUID获得接口的指针,再通过接口指针调用其相应的成员函数。客户端对COM对象的标识也是通过一个128位的GUID来实现,称为CLSID(Class Identifier),使用CLSID可以保证对象在全球范围内的唯一性。只要用户的系统中含有该类COM对象的信息,并且包括COM对象所在的模块文件(DLL或者EXE文件)以及COM对象在代码中的入口点,客户程序就可以通过CLSID创建对象(实际上是得到对象的一个指针),然后调用对象的成员函数,实现特定的功能。 COM对象和客户之间的相互作用是建立在客户/服务器模型上的,客户/服务器模型的最大优势是它的稳定性,正是这种稳定性为COM奠定了基础。另外,在客户/服务器模型的基础上,COM技术灵活地扩展了这一模型。在图2-2中,每个箭头表示了一个客户-服务器关系。图2-2(a)表示了一种简单的客户/服务器模型;在图2-2(b)中,对象2不仅为客户提供服务,还为对象1提供服务,对象1同时是对象2的一个客户,又为客户提供服务,在这个模型中,对象1由客户直接创建,而对象2既可以由对象1创建,又可以由客户创建;图2-2(c)和图2-2

文档评论(0)

dfdsfsf + 关注
内容提供者

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

1亿VIP精品文档

相关文档