- 7
- 0
- 约3.98万字
- 约 55页
- 2018-08-14 发布于湖北
- 举报
第7章 接受器(Acceptor)和连接器(Connector):连接建立模式
接受器/连接器模式设计用于降低连接建立与连接建立后所执行的服务之间的耦合。例如,在WWW浏览器中,所执行的服务或“实际工作”是解析和显示客户浏览器接收到的HTML页面。连接建立是次要的,可能通过BSD socket或其他一些等价的IPC机制来完成。使用这些模式允许程序员专注于“实际工作”,而最少限度地去关心怎样在服务器和客户之间建立连接。而另外一方面,程序员也可以独立于他所编写的、或将要编写的服务例程,去调谐连接建立的策略。
因为该模式降低了服务和连接建立方法之间的耦合,非常容易改动其中一个,而不影响另外一个,从而也就可以复用以前编写的连接建立机制和服务例程的代码。在同样的例子中,使用这些模式的浏览器程序员一开始可以构造他的系统、使用特定的连接建立机制来运行它和测试它;然后,如果先前的连接机制被证明不适合他所构造的系统,他可以决定说他希望将底层连接机制改变为多线程的(或许使用线程池策略)。因为此模式提供了严格的去耦合,只需要极少的努力就可以实现这样的变动。
在你能够清楚地理解这一章中的许多例子,特别是更为高级的部分之前,你必须通读有关反应堆和IPC_SAP的章节(特别是接受器和连接器部分)。此外,你还可能需要参考线程和线程管理部分。
7.1 接受器模式
接受器通常被用在你本来会使用BSD accept()系统调用的地方。接受器模式也适用于同样的环境,但就如我们将看到的,它提供了更多的功能。在ACE中,接收器模式借助名为ACE_Acceptor的“工厂”(Factory)实现。工厂(通常)是用于对助手对象的实例化过程进行抽象的类。在面向对象设计中,复杂的类常常会将特定功能委托给助手类。复杂的类对助手的创建和委托必须很灵活。这种灵活性是在工厂的帮助下获得的。工厂允许一个对象通过改变它所委托的对象来改变它的底层策略,而工厂提供给应用的接口却是一样的,这样,可能根本就无需对客户代码进行改动(有关工厂的更多信息,请阅读“设计模式”中的参考文献)。
图7-1 工厂模式示意图
ACE_Acceptor工厂允许应用开发者改变“助手”对象,以用于:
被动连接建立
连接建立后的处理
同样地,ACE_Connector工厂允许应用开发者改变“助手”对象,以用于:
主动连接建立
连接建立后的处理
下面的讨论同时适用于接受器和连接器,所以作者将只讨论接受器,而连接器同样具有相应的参数。
ACE_Acceptor被实现为模板容器,通过两个类作为实参来进行实例化。第一个参数实现特定的服务(类型为ACE_Event_Handler。因为它被用于处理I/O事件,所以必须来自事件处理类层次),应用在建立连接后执行该服务;第二个参数是“具体的”接受器(可以是在IPC_SAP一章中讨论的各种变种)。
特别要注意的是ACE_Acceptor工厂和底层所用的具体接受器是非常不同的。具体接受器可完全独立于ACE_Acceptor工厂使用,而无需涉及我们在这里讨论的接受器模式(独立使用接受器已在IPC_SAP一章中讨论和演示)。ACE_Acceptor工厂内在于接受器模式,并且不能在没有底层具体接受器的情况下使用。ACE_Acceptor使用底层的具体接受器来建立连接。如我们已看到的,有若干ACE的类可被用作ACE_Acceptor工厂模板的第二个参数(也就是,具体接受器类)。但是服务处理类必须由应用开发者来实现,而且其类型必须是ACE_Event_Handler。ACE_Acceptor工厂可以这样来实例化:
typedef ACE_AcceptorMy_Service_Handler,ACE_SOCK_ACCEPTOR MyAcceptor;
这里,名为My_Service_Handler的事件处理器和具体接受器ACE_SOCK_ACCEPTOR被传给MyAcceptor。ACE_SOCK_ACCEPTOR是基于BSD socket流家族的TCP接受器(各种可传给接受器工厂的不同类型的接受器,见表7-1和IPC一章)。请再次注意,在使用接受器模式时,我们总是处理两个接受器:名为ACE_Acceptor的工厂接受器,和ACE中的某种具体接受器,比如ACE_SOCK_ACCEPTOR(你可以创建自定义的具体接受器来取代ACE_SOCK_ACCEPTOR,但你将很可能无需改变ACE_Acceptor工厂类中的任何东西)。
重要提示:ACE_SOCK_ACCEPTOR实际上是一个宏,其定义为:
#define ACE_SOCK_ACCEPTOR ACE_SOCK_Acceptor, ACE_INET_Addr
我们认为这
您可能关注的文档
- 非常感谢贵公司购买我公司生产溶解氧在线分析仪。本说.PDF
- 肥城仪阳中学操场(含塑胶跑道、人工草坪)建设工程施工.doc
- 粉末物料在充填过程中表现和其粉末性质间相关性.PDF
- 佛山奥焊机械科技有限公司.PDF
- 服务+质量+医德=群众满意.PDF
- 福建晋江九十九溪上游双溪支流右汊河段河道整治工程.PDF
- 福建漳龙集团有限公司股权收购项目所涉和.PDF
- 2016年9月宁波区域十校联考.doc
- 附加常青树重大疾病保险(全能版)条款.PDF
- 附件1中标候选人在投标文件中填报项目业绩.PDF
- JJG 543-2026心电图机检定规程.pdf
- 《JJG 543-2026心电图机检定规程》.pdf
- GB/T 47045-2026乘用车车载信息优先级的确定方法.pdf
- 《GB/T 12668.2-2025调速电气传动系统 第2部分:一般要求 交流调速电气传动系统额定值的规定》.pdf
- 中国国家标准 GB/T 12668.2-2025调速电气传动系统 第2部分:一般要求 交流调速电气传动系统额定值的规定.pdf
- 中国国家标准 GB/T 31487.1-2025直流融冰装置 第1部分:系统设计.pdf
- GB/T 12668.2-2025调速电气传动系统 第2部分:一般要求 交流调速电气传动系统额定值的规定.pdf
- GB/T 31487.1-2025直流融冰装置 第1部分:系统设计.pdf
- 《GB/T 31487.1-2025直流融冰装置 第1部分:系统设计》.pdf
- 《GB/T 31418-2025道路交通信号控制系统术语》.pdf
原创力文档

文档评论(0)