网络库介绍

  1. ACE - Adaptive Communication Environment http://www.cs.wustl.edu/~schmidt/ACE.html

    2. Common G++ (GNU) http://www.gnu.org/software/commoncpp/

    3. Socket++ version 1.11 http://www.cs.utexas.edu/users/lavender/courses/socket++/

    4. Socket++ version 1.12+ http://www.linuxhacker.at/socketxx

    5. SocketMan http://web.media.mit.edu/~kbrussel/SocketMan/

    6. Skstream - IOStream based socket library http://www.worldforge.org/dev/eng/libraries/skstream

    7. SimpleSocket - http://home.hetnet.nl/~lcbokkers/simsock.htm

    8. PTypes - C++ Portable Types Library (includes multithreading and networking) http://www.melikyan.com/ptypes

    9. OpenTransport - The Classic MacOS networking API; much different from Sockets, but should be considered during design phase

    10. CPPSocket - http://sourceforge.net/projects/cppsocket

    11. C++ Sockets Library - http://www.alhem.net/Sockets/

    12. socketstream http://socketstream.sourceforge.net/

    13. DTILib http://www.dtilib.dk/

    14. Qts network module. http://doc.trolltech.com/4.1/qtnetwork.html

    15. Poco http://pocoproject.org/

    16. NetClass http://netclass.sourceforge.net/

    17. FEDLibrary http://sourceforge.net/projects/fedlibrary/

    18. C++ Stream Compatible TCP/IP Sockets http://sourceforge.net/projects/cpp-sockets/

    19. Asio http://asio.sourceforge.netorhttp://think-async.com/Asio/

***************

ACE与ASIO之间关于Socket编程的比较

转载自:http://www.rosoo.net/a/201001/8254.html

ACE是一个很成熟的中间件产品,为自适应通讯环境,但它过于宏大,一堆的设计模式,架构是一层又一层,对初学者来说,有点困难。

ASIO是基本Boost开发的异步IO库,封装了Socket,简化基于socket程序的开发。



最近分析ASIO的源代码,让我无不惊呀于它设计。在ACE中开发中的内存管理一直让人头痛,ASIO的出现,让我看到新的曙光,成为我新的好伙伴。简单地与ACE做个比较。



1.层次架构:

ACE底层是C风格的OS适配层,上一层基于C++的wrap类,再上一层是一些框架(Accpetor, Connector,Reactor等),最上一层是框架上服务。

ASIO与之类似,底层是OS的适配层,上一层一些模板类,再上一层模板类的参数化(TCP/UDP),再上一层是服务,它只有一种框架为io_service。



2.涉及范围:

ACE包含了日志,IPC,线程,共享内存,配置服务等。

ASIO只涉及到Socket,提供简单的线程操作。



3.设计模式:

ACE主要应用了Reactor,Proactor等。

而ASIO主要应用了Proactor。



4.线程调度:

ACE的Reactor是单线程调度,Proactor支持多线程调度。

ASIO支持单线程与多线程调度。



5.事件分派处理:

ACE主要是注册handler类,当事件分派时,调用其handler的虚挂勾函数。实现ACE_Handler / ACE_Svc_Handler / ACE_Event_handler等类的虚函数。

ASIO是基于函数对象的hanlder事件分派。任何函数都可能成为hanlder,少了一堆虚表的维护,调度上优于ACE。



6.发布方式:

ACE是开源免费的,不依赖于第3方库, 一般应用使用它时,以动态链接的方式发布动态库。

ASIO是开源免费的,依赖Boost,应用使用时只要include头文件,不需动态库。



7.可移植性:

ACE支持多种平台,可移植性不存在问题,据说socket编程在linux下有不少bugs。

ASIO支持多种平台,可移植性不存在问题。



8.开发难度:

基于ACE开发应用,对程序员要求比较高,要用好它,必须非常了解其框架。在其框架下开发,往往new出一个对象,不知在什么地方释放好。

基于ASIO开发应用,要求程序员熟悉函数对象,函数指针,熟悉boost库中的boost::bind。内存管理控制方面。



我个人觉得,如果应用socket编程,使用ASIO开发比较好,开发效率比较高。ACE适合于理论研究,它本来就是源于Douglas的学术研究。

转载自:http://blog.csdn.net/yangzhuoluo/archive/2009/06/27/4303134.aspx
原文链接: https://www.cnblogs.com/shenlian/archive/2011/08/25/2153815.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/31173

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 上午8:25
下一篇 2023年2月8日 上午8:26

相关推荐