C ACE中的设计模式应用场景.pdfVIP

  • 6
  • 0
  • 约8.1千字
  • 约 7页
  • 2018-03-26 发布于河南
  • 举报
C ACE中的设计模式应用场景

C++ACE 中的设计模式应用场景 最近在整理以前所看文章内容时,发现了几篇2003年程序员合订本里关于 ACE的文章,当 年这几篇文章中所谈到的内容就让人非常兴奋,因为在那个国内热火朝天学习设计模式的几 年里,这几篇文章因为其内 容涉及到了bridge, strategy, adapter, facade等模式在 这个网络通信框架中实打实的应用,让我切身体 会到了面向对象设计模式的强大火力。同 时因为这几篇文章绝不是我们在学习模式应用时想当然的东西,决 不是简单的几句玩笑或 不成熟的例子所能同日而语。所以我感觉还是把这几篇文章中的核心内容保存到网上 比较 好。 而这样做的目的有三: 一是给自己留了个备份,免得将来书在搬家或因为别的原因丢 了。 二是也希望能有更多对设计模式感兴趣但却没看过这几篇文章的朋友不要有失之交臂 的感觉。 三是让我感觉最有必要的一点就是有些个别站点居然凭借自己有这方面的论文内 容去卖钱(手机充值方式),我想做为原作者马维达先生看了之后也会感到很不舒服。这也 是让我感到“屎可忍而尿不可忍”的地方。 好了,说了一堆废话之后开始今天的正文。 在正文开始之前,有必要先解释一下什么是ACE,即AdapterCommunicateEnvirment, 适配器通信环境,这是一个C++开发的网络通信框架,其自身是开源的。因为其诞生时间 早(与Linux同一年出生),且其所提供的功能很好很强大,我们可以使用它完成可跨越多 种平台完成通用的通信软件任务,其中包括:事件多路分离和事件处理器分派、信号处理、 服务初始化、进程间通信、共享内存管理、消息路由、分布式服务动态(重)配置、并发执 行和同步等等。 且代码开发非常规范(大约100万行精心构造的C++代码),是一部不可多 得的学习教材。该框架的创始人信息如下: DouglasC.Schmidt,美国Vanderbilt大学电 子工程与计算机科学系教授,ACE与TAO项目的创始人。(从美国海军到CERN物理实验室, 从Boeing Advanced Avionics Systems到都能看到这两个软件的踪影) 他是中间件技术的 先驱之一,在相关领域发表了百余篇学术论文。 包括Microsoft在内的许多公司都受到了 他在通信软件技术方面的贡献的影响(国内也有一些网游公司使用该框架作为其通信机制实 现平台)。 注:因为这篇文章不是面向初学者的文章,而是对那些有一定模式使用经验,同时也对 上面所说的那几 种设计模式有一定心得的朋友。相信当您看到本文中所说的几个模式的应 用场景和最终的实现结果后,会有 某些心得。当然本文的内容大部分还是来自于马先生的 文章,这里决不是抄袭,而是一种回顾,当然如果您感到本人很不耻,把别人的东西拿过来 给自己帖金,那么还是请您不要再看了。因为我从没有感到这是在给我自己写,而是如上面 的三个目的那样,所以当您看完本文后,不必说我的人品怎么怎么样,而是应该把注意力转 移到模式的应用场景中去,结合自己的开发设计心得来进行回味,而这才是我写的目的。 首先介绍一下Bridge(桥模式)在ACE框架中的运用: 通信软件常常要对各种类型的 事件进行多路分离、并进通行相应的处理。为使各种事件驱动的处理活动 统一起来、并得 以自动化,ACE提供了叫做ACE_Reactor的事件多路分离和事件处理器分派框架。同时,为 了保证应用的可移植性,无论是在何种操作系统上,也无论底层使用了何种事件多路分离机 制,ACE_Reactor所提供的接口都是一样的;并且,在有些平台上,还可以根据实际需要, 在运行时更换底层所使用的事件多 路分离机制(比如在Windows上既可以使用 WaitForMultipleObjects(),也可以使用select())。 Bridge模式正是ACE_Reactor具 有这样的灵活性和可移植性的关键所在。 值得特别注意的是ACE_Reactor的私有成员 reactor_impl_,这个指针变量正是ACE_Reactor中的“桥” 实现的关键所在。 ACE是具有高度可移植性的跨平台通信软件开发框架,在各种平台上提供相同的开发接 口,是其重要目标之一。上面所描述的ACE_Reactor接口及相关接口,在 ACE支持的各种 平台上都是相同的,但因为这些平台 提供的多路分离机制各不相同,所以在开发 ACE_Reactor 时,必须为不同的平台提供不同的具体实现。要 达到这一目的,一般的做法 是为每种平台定义一个继承自 ACE_Reactor类的子类,在子类中提供该平台专 用的具

文档评论(0)

1亿VIP精品文档

相关文档