计算机二级考试C++辅导:ACE中的设计模式应用场景

计算机二级考试C++辅导:ACE中的设计模式应用场景,第1张

计算机二级考试C++辅导:ACE中的设计模式应用场景,第2张

什么是ACE,即适配器通信环境,“适配器通信环境”,是一个用C++开发的网络通信框架,是开源的。因为它诞生的早(与Linux同年),功能非常好,非常强大,我们可以用它来完成可以跨多个平台的通用通信软件任务,包括事件解复用和事件处理程序调度、信号处理、服务初始化、进程间通信、共享内存管理、消息路由、分布式服务的动态(重新)配置、并发执行和同步等等。并且代码开发非常规范(约100万行精心构造的C++代码),是不可多得的学习教材。这个框架的创始人信息如下:Douglas C. Schmidt,美国范德堡大学电子工程与计算机科学系教授,ACE与TAO项目创始人。(从美国海军到CERN物理实验室,从波音高级航空电子系统到)他是中间件技术的先驱之一,在相关领域发表了100多篇学术论文。包括微软在内的很多公司都受到了他在通信软件技术上的贡献的影响(国内的一些网游公司也使用这个框架作为他们的通信机制实现平台)。
首先介绍一下Bridge(桥接模式)在ACE框架中的应用:通信软件经常要对各种类型的事件进行解复用,并进行相应的处理。为了统一和自动化各种事件驱动的处理活动,ACE提供了一个名为ACE_Reactor的事件解复用和事件处理程序调度框架。同时,为了保证应用的可移植性,ACE_Reactor提供的接口无论是操作系统还是底层使用的事件解复用机制都是一样的。而且,在某些平台上,还可以根据实际需要,在运行时改变底层使用的事件多路径分离机制(比如在Windows上,可以使用WaitForMultipleObjects()或者select())。桥接模式是ACE_Reactor灵活性和可移植性的关键。特别值得注意的是ACE_Reactor的私有成员reactor_impl_,它是ACE_Reactor实现“桥”的关键。
ACE是一个高度可移植的跨平台通信软件开发框架。在各种平台上提供相同的开发接口是其重要目标之一。
上述ACE_Reactor接口和相关接口在ACE支持的各种平台上都是相同的。但是由于这些平台提供了不同的解复用机制,所以在开发ACE_Reactor时,必须针对不同的平台提供不同的具体实现。为了实现这个目标,通常的做法是为每个平台定义一个继承自ACE_Reactor类的子类,并在子类中提供特定于该平台的具体实现。然而,正如GoF在《设计模式》一书中所说,这样的继承永久地绑定了实现和抽象,这使得我们很难独立地修改、扩展和重用各种抽象和实现。基于这种考虑,ACE的开发者在实现ACE_Reactor时采用了桥模式。
下图以ACE_Select_Reactor和ACE_WFMO_Reactor为例说明ACE_Reactor体现的桥模式:我们可以参考设计模式书。
Abstraction(ACE_Reactor)定义了ACE_Reactor抽象的接口,维护了一个指针reactor_impl_,指向Implementor类型的对象。许多操作将通过这个指针被转发给具体的实现者对象。RefinedAbstraction(None)ACE中没有定义RefinedAbstraction,但是如果你想扩展ACE_Reactor接口,可以自己定义。
implementer (Reactor _ impl)定义了反应器实现类的接口。
具体实现者(ace _ select _ reactor和ACE_WFMO_Reactor)实现Reactor_Impl接口并定义其具体实现。除了这里提到的ACE_Select_Reactor和ACE_WFMO_Reactor,ACE中还定义了ACE_Dev_Poll_Reactor(基于“/dev/poll”或“/dev/epoll”)和ACE_TP_Reactor(支持基于线程池的事件调度)等其他类型的反应器。具体可以参考ACE的参考文档:由于ACE_Reactor的实现采用了桥模式,所以我们在使用ACE_Reactor时有很大的灵活性。比如在Windows平台上,系统提供的WaitForMultpleObjects()只能同时等待64个句柄,而ACE_WFMO _Reactor正在使用2个句柄进行内部管理,所以如果你使用的是ACE_WFMO_Reactor,实际上只能同时等待62个句柄。对于大型应用来说,这往往是不够的(显然,这个问题不是道格拉斯·c·施密特的错,而是比尔·盖茨的错)。如果不需要使用ACE_WFMO_Reactor提供的一些特殊功能(比如等待同步事件),可以使用ACE_Select_Reactor对事件进行解复用:
ACE _ Select _ Reactor Select _ Reactor;ACE_Reactor反应器(& select _ Reactor);......通过使用面向对象技术和桥接模式,ACE_Reactor具有以下特性:
1 .统一OO解复用调度接口
2。自动事件处理程序调度
3。支持透明扩展
4。增加多路复用
5。增强。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 计算机二级考试C++辅导:ACE中的设计模式应用场景

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情