ACE(ADAPTIVE Communication Environment)是一个网络软件开发工具包,或者说成是中间件。ACE很好很强大,但也比较难学,其实好东西都挺难学的,比如MFC。究其原因,需要的基础知识太多,C++语言、网络编程、面向对象编程和设计模式。MFC主要需要Windows编程的基础。
3年前接触ACE,当时感觉懂了,最近捡起来发现又不懂了,重新复习了一下,把心得记录一下吧。
1. 平时用的比较多的是ACE_Acceptor和ACE_Connector,这个可以看成是一个框架,其中涵盖了ACE_Event_Handler、ACE_Sve_Handler、ACE_Task、ACE_Reactor等类。
2. ACE_Reactor是对select()或poll()的封装,实现的是事件多路分离器,属于I/O模型中的I/O复用模型。想深入了解的话要看《UNIX网络编程》。这里的ACE_Reactor用到了Bridge模式,ACE_Reactor里面有一个ACE_Reactor_Impl,其具体实现例如ACE_Select_Reactor_Impl等。
3. 和ACE_Reactor配套的是ACE_Event_Handler,看起来和ACE_Svc_Handler挺像,但ACE_Event_Handler是最上层的基类,下面有ACE_Service_Object继承,再下面依次是ACE_Task_Base、ACE_Task、ACE_Svc_Handler。因此所有以上的类都可以和ACE_Reactor配合使用。
4. ACE_Acceptor和ACE_Connector是个工厂模式,用来生成真正处理连接的ACE_Svc_Handler子类。然后ACE_Reactor就和ACE_Svc_Handler打交道了。ACE_Acceptor只是起到一个工厂和牵线搭桥的作用。