没有合适的资源?快使用搜索试试~ 我知道了~
C语言实现网络编程应用 ACE架构详解
4星 · 超过85%的资源 需积分: 9 42 下载量 164 浏览量
2011-07-16
23:32:08
上传
评论 2
收藏 147KB DOC 举报
温馨提示
试读
21页
Adaptive Communication Environment (ACE) 是一个高性能、开放源码、面向对象的框架和 C++ 类库,它有助于简化网络应用程序的开发。ACE 工具包包括一个操作系统层和一个封装网络 API 的 C++ 外观(facades)集合。此文对源码进行分析,希望对你帮助。
资源推荐
资源详情
资源评论
Adapve Communicaon Environment (ACE) 是一个高性能、开放源码、面向对象的框架和
C++ 类库,它有助于简化网络应用程序的开发。ACE 工具包包括一个操作系统层和一个封
装网络 API 的 C++ 外观(facades)集合。
ACE
接受器-连接器模式
接受器-连接器设计模式()使分布式系统中的连接建立及服务初
始化与一旦服务初始化后所执行的处理去耦合。
这样的去耦合通过三种组件来完成:acceptor、connector和`servicehandler(服
务处理器)。
连接器主动地建立到远地接受器组件的连接,并初始化服务处理器来处理在连接上交
换的数据。
接受器被动地等待来自远地连接器的连接请求,在这样的请求到达时建立连接,并初
始化服务处理器来处理在连接上交换的数据。
初始化的服务处理器执行应用特有的处理,并通过连接器和接受器组件建立的连接来
进行通信。
结构
1. 服务处理器(Service Handler):
实现应用服务,通常扮演客户角色、服务器角色,或同时扮演这两种角
色。它提供挂钩方法,由`或`调用,以在连接建立时启用应用服务。
此外,还提供数据模式传输端点,其中封装了一个`句柄。一旦连接
和初始化后,该端点被`用于与和其相连的对端交换数据。
2. 接受器(Acceptor):
是一个工厂,实现用于被动地建立连接并初始化与其相关联的`
的策略。此外,包含有被动模式的传输端点工厂,它创建新的数据模
式端点,由`用于在相连的对端间传输数据。通过将传输端点工厂绑定
到网络地址,比如`在其上侦听的`端口号, 的`方法对该工
厂进行初始化。`
一旦初始化后,被动模式的传输端点工厂侦听来自对端的连接请求。当连接请求到达时,
创建`,并使用它的传输端点工厂来将新连接接受进
中。
3. 连接器(Connector):
是一个工厂,实现用于主动地建立连接并初始化与其相关联的`
的策略。它提供方法,由其发起到远地`的连接。同样地,它还提供另
一个方法,完成对`的启用;该处理器的连接是被同步或异步地发起的。
使用两个分开的方法来透`明地支持异步连接建立。
4. 分派器(Dispatcher):
为`,将在一或多个传输端点上接收到的连接请求多路分离给适当的
。 允许多个`向其登记,以侦听同时在不同端口上从不同
对端而来的连接。`为`,处理异步发起的连接的完成。在这种情况
下,当异步连接被建立时,回调`。允许多个`
通过一个`来异步地发起和完成它们`的连接。注意对于同步
连接建立,并不是必需的,因为发起连接的线程控制也完成服务服务处`理器
的启用。
通常使用事件多路分离模式来实现,这些模式由反应器( )或前摄
器()`来提供,它们分别处理同步和异步的多路分离。同样地,也
可以使用主动对象(!")模式#$%来实现为单独的线程或进程。
协作
Acceptor 组件协作
和`之间的协作。这些协作被划分为三个阶段:
端点初始化阶段:
为被动地初始化连接,应用调用`的`方法。该方法创建被动模式的传`输端
点,将其绑定到网络地址,例如,本地主机的`地址和`端口号,并随后侦听来自对
端`的连接请求。其次,方法将`对象登记到`,以
使分派器能够在连接事件`到达时回调`。最后,应用发起`的事件循
环,等待连接请求从对端`到来。
服务初始化阶段:
当连接请求到达时,回调`的 方法。该方法装配以下活动`
所必需的资源:
创建新的`,
使用它的被动模式传输端点工厂来将连接接受进`该处理器的数据模式传输端点中,
通过调用`的`挂钩将其启用。的`挂
钩可以执行服务特有的初始化,比如分配锁、派生线程、打开日志文件,和或将`该`
登记到`。
服务处理阶段:
在连接被动地建立和`被初始化后,服务处理阶段开始了。在此阶段,`
应用级通信协议,比如`或`,被用于在本地`和与其相连的远
地`之间、`经由前者的`&'&端点交换数据。当交换完成,可关闭连接和`
,并释放资源。
Connector 组件协作
组件可以使用同步和异步两种方式来初始化它的`,这里仅介
绍一下同步时的协作情况。
同步的`情况中的参与者之间的协作可被划分为以下三个阶段:
连接发起阶段:
为在`和它的远地`之间发起连接,应用调用`的`
方法。该方法阻塞调用线程的线程控制、直到连接同步完成,以主动地建立
连接。
服务初始化阶段:
在连接完成后,的`方法调用`'方法来启用`
。'方法通过调用`&的`挂钩方法来完成启
用;方法执行服务特有的`初始化。
服务处理阶段:
此阶段与`被`创建后所执行的服务处理阶段相类似。特别
地,`一旦`被启用,它使用与和其相连接的远地`
交换的数据来执行应用特`有的服务处理。
实现
运行一般步骤:
创建`;
被动地或主动地将`连接到它们的远地对端;以及
一旦连接,启用`。
主要角色:(服务处理器)、和`。
服务处理器:该抽象类继承自`(&,并为客户、服务器或同时扮演两种角色
的组件所提供`的服务处理提供通用接口。应用必须通过继承来定制此类,以执行特定类型
的服务。接口如下所示:
代码`
')(( & (*+
&,-!(&
.
/ -!,
$ 连接成功后的初始化入口函数`0子类定义1
2 -01345
6 返回通信流的引用``
7 (( & (*801
9 .
4 -&'&5
:
:5
一旦`或`建立了连接,它们调用`的`挂钩。
该纯虚方法必须被`子类定义;后者执行服务特有的初始化和
后续处理。
连接器:该抽象类实现主动连接建立和初始化`的通用策略。它的接口
如下所示:
代码`
')( ;(&<=( >(( &<<( +
,-!(&
.
/ -!,
$ -'&*
2 .
6 ?<>以同步方式连接``
7 ?<以异步方式连接``
9 :5
4 主动连接并激活服务处理器``
0( ;(&<=( @>
(( &<<( ,,(( & 8>
&*'15
/ ,
$ 定义连接激活策略``
2 -&&0( ;(&<=( @>
6 (( &<<( ,,(( & 8>
7 &*'15
9 AB-CDC
4 -&&0( ;(&<=( @15
当以异步方式连接完成时激活服务处理器``
-'0<=(15
,
/ ''!
$ C
2 (( &<<( &5
6 :5
通过特定类型的`(( <<( 和`( ;(<=( 被参数化。
(( <<( 提供的传输机制被`用于主动地建立连接,或是同步地、
或是异步地。( ;(<=( 提供的服务对与相连的对端交换的数据进行处理。E
E参数化类型被用于使()连接建立策略与()服务处理器类型、网络编程接口和传输
层`连接协议去耦合。
参数化类型是有助于提高可移植性的实现决策。例如,它们允许整体地替换`
所用的`机`制。这使得`的连接建立代码可在含有不同网络编程接口(例
如,有`F,但没有`=;反之`亦然)的平台间进行移植。
的`挂钩在连接成功建立时被调用。
接受器(Acceptor):该抽象类为被动连接建立和初始化`实现通用
的策略。的接`口如下所示:
代码`
')( ;(&<=( >
(( &( +
,-!(&
/ .
$ -!,
2 G&HC
6 DI&D
7 -0(( &( ,,(( & 8&15
9 JC*>>
4 ( ;(&<=( B
-015
,
定义服务处理器的创建策略``
/ -( ;(&<=( @'F&&015
$ 定义服务处理器的连接策略``
2 -&&0( ;(&<=( @15
6 定义服务处理器的激活策略``
7 -&&0( ;(&<=( @15
9 '-KDFH'(&>
4 I-!C&H
!F
-<=(D&015
-&015
/ ,
$ ''!
2 C
6 (( &( &&5
7 :5
通过特定类型的`(( ( 和`( ;(<=( 被参数化。((
( 提供的传输机制被`用于被动地建立连接。( ;(<=( 提
供的服务对与远地对端交换的`数据进行处理。注意`( ;(<=( 是由应用层提供
的具体的服务处理器。
参数化类型使`的连接建立策略与服务处理器的类型、网络编程接口及传输层连
接发起协议去耦合。就如同`一样,通过允许整体地替换`所用的机
制,参数化类型的使用有助于提高可移植性。这使得连接建立代码可在含有不同网络编程
接口(比如有`F,但没有`=;反之亦然)的平台间移植。
'F&&工厂方法定义`用于创建`( ;(<=( 的缺
省策略。如下所示:
代码`
')>+@
)>+,,'F&&01
.
/ -I5
$ :
剩余20页未读,继续阅读
资源评论
- nanjing161154612014-10-13学习了,很有参考价值
- jacking_0172012-07-31不错的东东,讲得很详细
说服自已
- 粉丝: 3
- 资源: 17
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功