• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            大龍的博客

            常用鏈接

            統(tǒng)計(jì)

            最新評論

            ACE與ASIO之間關(guān)于Socket編程的比較

             

            ACE與ASIO之間關(guān)于Socket編程的比較

            轉(zhuǎn)自:FREE MY SOUL

            ACE是一個(gè)很成熟的中間件產(chǎn)品,為自適應(yīng)通訊環(huán)境,但它過于宏大,一堆的設(shè)計(jì)模式,架構(gòu)是一層又一層,對初學(xué)者來說,有點(diǎn)困難。
            ASIO是基本Boost開發(fā)的異步IO庫,封裝了Socket,簡化基于socket程序的開發(fā)。

            最近分析ASIO的源代碼,讓我無不驚呀于它設(shè)計(jì)。在ACE中開發(fā)中的內(nèi)存管理一直讓人頭痛,ASIO的出現(xiàn),讓我看到新的曙光,成為我新的好伙伴。簡單地與ACE做個(gè)比較。

            1.層次架構(gòu):
            ACE底層是C風(fēng)格的OS適配層,上一層基于C++的wrap類,再上一層是一些框架(Accpetor, Connector,Reactor等),最上一層是框架上服務(wù)。
            ASIO與之類似,底層是OS的適配層,上一層一些模板類,再上一層模板類的參數(shù)化(TCP/UDP),再上一層是服務(wù),它只有一種框架為io_service。

            2.涉及范圍:
            ACE包含了日志,IPC,線程,共享內(nèi)存,配置服務(wù)等。
            ASIO只涉及到Socket,提供簡單的線程操作。

            3.設(shè)計(jì)模式:
            ACE主要應(yīng)用了Reactor,Proactor等。
            而ASIO主要應(yīng)用了Proactor。

            4.線程調(diào)度:
            ACE的Reactor是單線程調(diào)度,Proactor支持多線程調(diào)度。
            ASIO支持單線程與多線程調(diào)度。

            5.事件分派處理:
            ACE主要是注冊handler類,當(dāng)事件分派時(shí),調(diào)用其handler的虛掛勾函數(shù)。實(shí)現(xiàn)ACE_Handler/ACE_Svc_Handler/ACE_Event_handler等類的虛函數(shù)。
            ASIO是基于函數(shù)對象的hanlder事件分派。任何函數(shù)都可能成功hanlder,少了一堆虛表的維護(hù),調(diào)度上優(yōu)于ACE。

            6.發(fā)布方式:
            ACE是開源免費(fèi)的,不依賴于第3方庫, 一般應(yīng)用使用它時(shí),以動(dòng)態(tài)鏈接的方式發(fā)布動(dòng)態(tài)庫。
            ASIO是開源免費(fèi)的,依賴Boost,應(yīng)用使用時(shí)只要include頭文件,不需動(dòng)態(tài)庫。

            7.可移植性:
            ACE支持多種平臺(tái),可移植性不存在問題,據(jù)說socket編程在linux下有不少bugs。
            ASIO支持多種平臺(tái),可移植性不存在問題。

            8.開發(fā)難度:
            基于ACE開發(fā)應(yīng)用,對程序員要求比較高,要用好它,必須非常了解其框架。在其框架下開發(fā),往往new出一個(gè)對象,不知在什么地方釋放好。
            基于ASIO開發(fā)應(yīng)用,要求程序員熟悉函數(shù)對象,函數(shù)指針,熟悉boost庫中的boost::bind。內(nèi)存管理控制方便。


            我個(gè)人覺得,如果應(yīng)用socket編程,使用ASIO開發(fā)比較好,開發(fā)效率比較高。ACE適合于理論研究,它本來就是源于Douglas的學(xué)術(shù)研究。

            posted on 2007-09-22 09:52 大龍 閱讀(3611) 評論(3)  編輯 收藏 引用

            評論

            # re: ACE與ASIO之間關(guān)于Socket編程的比較 2008-05-15 18:09 xbzg

            ms asio需要?jiǎng)討B(tài)庫的 boost135 vc2005

            #include "stdafx.h"
            #include <boost/asio.hpp>

            int _tmain(int argc, _TCHAR* argv[])
            {
            return 0;
            }

            1>e:\boost135\boost_1_35_0\boost\utility\enable_if.hpp : warning C4819: 該文件包含不能在當(dāng)前代碼頁(936)中表示的字符。請將該文件保存為 Unicode 格式以防止數(shù)據(jù)丟失
            1>e:\boost135\boost_1_35_0\boost\config\abi_prefix.hpp : warning C4819: 該文件包含不能在當(dāng)前代碼頁(936)中表示的字符。請將該文件保存為 Unicode 格式以防止數(shù)據(jù)丟失
            1>e:\boost135\boost_1_35_0\boost\config\abi_suffix.hpp : warning C4819: 該文件包含不能在當(dāng)前代碼頁(936)中表示的字符。請將該文件保存為 Unicode 格式以防止數(shù)據(jù)丟失
            1>e:\boost135\boost_1_35_0\boost\utility\enable_if.hpp : warning C4819: 該文件包含不能在當(dāng)前代碼頁(936)中表示的字符。請將該文件保存為 Unicode 格式以防止數(shù)據(jù)丟失
            1>正在鏈接...
            1>LINK : fatal error LNK1104: 無法打開文件“l(fā)ibboost_system-vc80-mt-gd-1_35.lib”
            1>生成日志保存在“file://e:\暫存\VC2005 Projects\testBoostSpirit\testBoostSpirit\Debug\BuildLog.htm”
            1>testBoostSpirit - 1 個(gè)錯(cuò)誤,4 個(gè)警告
            ========== 生成: 0 已成功, 1 已失敗, 0 最新, 0 已跳過 ==========

              回復(fù)  更多評論   

            # re: ACE與ASIO之間關(guān)于Socket編程的比較 2008-05-15 19:56 Kevin Lynx

            @xbzg
            忽略即可,基本上你還需要忽略其他幾個(gè)默認(rèn)鏈接的boost庫  回復(fù)  更多評論   

            # re: ACE與ASIO之間關(guān)于Socket編程的比較 2008-06-01 10:29 classyk

            asio終于在boost 1.45里正式推出了,輕量級的設(shè)計(jì)還是不錯(cuò)的。希望以后不要發(fā)展到和ACE一樣臃腫  回復(fù)  更多評論   

            久久亚洲精品无码aⅴ大香| 色悠久久久久久久综合网| 色欲综合久久中文字幕网| 国产成年无码久久久免费| 久久精品国产亚洲AV无码娇色| 久久香蕉国产线看观看乱码| 久久久久久一区国产精品| 久久亚洲熟女cc98cm| 热久久这里只有精品| 久久无码高潮喷水| 99久久国产亚洲高清观看2024 | 91久久精品国产91性色也| 久久久久香蕉视频| 久久久久久九九99精品| 蜜桃麻豆www久久国产精品| 69SEX久久精品国产麻豆| 7777久久久国产精品消防器材| 7国产欧美日韩综合天堂中文久久久久 | 99久久综合国产精品免费| 久久综合丁香激情久久| 久久人人妻人人爽人人爽| 久久综合九色欧美综合狠狠| 精品蜜臀久久久久99网站| 久久精品国产亚洲AV久| 亚洲&#228;v永久无码精品天堂久久| 久久久久亚洲AV片无码下载蜜桃| 久久国内免费视频| 狠狠色丁香久久婷婷综合_中| 国产91久久综合| 精品久久久久久99人妻| 一级做a爱片久久毛片| 久久精品国产福利国产秒| 人妻少妇久久中文字幕| 欧美大香线蕉线伊人久久| 无码超乳爆乳中文字幕久久| 一本色综合网久久| 久久夜色精品国产噜噜亚洲AV| 久久人人添人人爽添人人片牛牛| 蜜桃麻豆WWW久久囤产精品| 2021最新久久久视精品爱 | 亚洲国产另类久久久精品黑人 |