因为该模式降低了服务和连接建立方法之间的耦合,非常容易改动其中一个,而不影响另一个,从而也就可以复用以前编写的连接建立机制和服务例程的代码。在同样的例子中,使用这些模式的浏览器程序员一开始可以构造它的系统、使用特定的连接建立机制来运行它和测试它;然后,如果先前的连接机制被证明不适合它所构造的系统,他可以将底层连接机制改变为多线程的(或许使用线程池策略)。因为此模式提供了严格的去耦合,只需要极少的努力就可以实现这样的变动。
ACE_Connector和ACE_Acceptor的工作可大致划分为三个阶段:
(1)端点或连接初始化阶段 (使用ACE_INET_Addr 初始化端点)。
(2)服务初始化阶段 (使用ACE_SOCK_CONNECTOR或ACE_SOCK_ACCEPTOR建立连接)。
(3)服务处理阶段 (使用ACE_SOCK_STREAM获取socket数据)。
ACE中可用的连接见表1。
表1ACE中可用连接
接受器类型 |
所用地址 |
所用流 |
具体连接器 |
具体接受器 |
TCP
流接收器 |
ACE_INET_Addr |
ACE_SOCK_STREAM |
ACE_SOCK_CONNECTOR |
ACE_SOCK_ACCEPTOR |
端点或连接初始化阶段:
ACE_INET_Addr server_addr;
server_addr.set(8888,”192.168.1.1”);
ACE_INET_Addr addr(8888);
|