搜索

72 在COM对象间实现统一事件模型(1)

gecimao 发表于 2019-06-16 05:49 | 查看: | 回复:

  在COM规范中,定义了一个被称为可连接对象(Connectable Object)的对象交互模型,以用来处理COM对象间的复杂交互。实现这种复杂交互依赖于客户组件中的接收器(sink)和处于服务组件中的连接点对象之间(Connection Point Object)的相互作用。可连接对象的模型可以使用图7-4来表示。

  可连接对象的基本运行机制是:首先,客户组件通过调用IConnectionPointContainer:: FindConnectionPoint方法来得到服务组件的IConnectPoint接口。然后,调用IConnectPoint:: Advise方法将接收器对象的接口指针传递给服务组件中的连接点对象。最后,客户组件就可向服务组件发送服务请求了。当服务组件接收此请求并处理完毕后,会根据接收器接口指针来回调其中的事件处理方法。

  可以清楚地看出,连接点的运作过程与图7-2所示的一般事件处理模型在概念层次上是吻合的。所不同的是,由于交互双方是真正的软件实体—— COM组件/对象,因此,在具体实现上要依赖于特殊的成分(如接受器和连接点等)。

  以上叙述的只是有关COM可连接对象的框架模型。由于COM可连接对象的编程相当复杂,而且本书不是一本介绍COM技术的专著,因此,就不对过于细节的信息做更多的描述了,请有特殊兴趣的读者参考其他技术专著。

  虽然,COM可连接对象的框架很好理解,但是实现起来可不是那样容易,不论是服务组件还是客户端组件的实现都因为涉及到复杂的接口实现而显得十分麻烦。即使有像ATL 3.0这样的工具,也只能在有限范围内帮助开发人员进行对象交互的开发。

  现在,有了统一事件模型,开发人员就可以以一种清晰明了的方式来进行COM可连接对象的开发了,并可以减少编写大量起基础作用的代码。在后面的小节里,大家就可以看到统一事件模型的强大功能了。

  使用原有技术来实现COM可连接对象是相当麻烦的,而且也不是本书的介绍的重点,但是,为了能够更强烈地反衬出统一事件模型所具备的强大优越性,我们仍然安排了这一小节,并通过展示范例代码,来对原有实现COM可连接对象的技术作一个简单的介绍。

本文链接:http://robynlynne.com/duixiangmoxing/553.html
随机为您推荐歌词

联系我们 | 关于我们 | 网友投稿 | 版权声明 | 广告服务 | 站点统计 | 网站地图

版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright @ 2012-2013 织梦猫 版权所有  Powered by Dedecms 5.7
渝ICP备10013703号  

回顶部