• <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>

            woaidongmao

            文章均收錄自他人博客,但不喜標題前加-[轉貼],因其丑陋,見諒!~
            隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
            數據加載中……

            ACE與ASIO之間關于Socket編程的比較

            ACE與ASIO之間關于Socket編程的比較
            轉自:FREE MY SOUL
            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的學術研究。

            posted on 2007-09-21 10:27 金慶 閱讀(606) 評論(16) 編輯 收藏 引用 所屬分類: 1. C/C++

            評論

            # re: ACE與ASIO之間關于Socket編程的比較 2007-09-21 23:01 missdeer

            發現asio占用CPU很厲害,而且不知道是不是我用得不對,傳輸效率并不高。。。  回復 更多評論

            # re: ACE與ASIO之間關于Socket編程的比較 2007-09-22 10:15 金慶

            @missdeer
            ACE,asio都沒用過。只是用了boost中幾個庫之后,對boost有好感。以前的網絡編程都是直接用socket。是否選用asio還需要自己考察。  回復 更多評論

            # re: ACE與ASIO之間關于Socket編程的比較[未登錄] 2007-09-24 16:16 exile

            asio本身并不占用多少資源, 如果網絡連接數不多,但占用CPU很厲害, 那肯定時是自己寫的程序某個地方出了問題.  回復 更多評論

            # re: ACE與ASIO之間關于Socket編程的比較 2007-09-24 23:34 missdeer

            @exile
            我也希望是自己寫的代碼的問題,畢竟要選擇用一個框架來進行開發,對于一個穩重的項目組來說是很大的一個決心。可是我用的測試代碼就是asio自帶的例子程序,其它相關的文檔提及的也少……  回復 更多評論

            # re: ACE與ASIO之間關于Socket編程的比較[未登錄] 2007-09-25 10:56 eXile

            @missdeer
            那就應該分析一下測試的環境. 看一下有連接時,無連接時, 局域網中, 公網中.
            asio本身帶的例子是很簡單的, 都是用法演示,最多也就服務器設定幾個線程.
            在局域網中進行這樣的測試是沒有什么意義的.
            boost 的 thread 和asio都是有可能作為系統支持庫進入std::tr2的.
            回復 更多評論

            # re: ACE與ASIO之間關于Socket編程的比較 2007-09-27 17:05 金慶

            @missdeer
            我下載了asio 0.3.8準備試試它的例子。不過發現asio不支持VC6。boost其它庫都是支持VC6的,而asio只支持VC7.1和VC8。  回復 更多評論

            # re: ACE與ASIO之間關于Socket編程的比較 2007-09-27 21:53 missdeer

            @金慶
            如果要用Boost之類的模板庫,強烈建議放棄VC6,改用7.1或8.0,無論從編譯器對標準的兼容,還是第三方庫對編譯器的支持上看,7.1都遠遠好于6.0  回復 更多評論

            # re: ACE與ASIO之間關于Socket編程的比較 2007-09-28 09:06 金慶

            @missdeer
            我想的是放棄VC。只要我掌握了wxWidgets,就可以拋棄MFC,然后拋棄VC。  回復 更多評論

            # re: ACE與ASIO之間關于Socket編程的比較 2007-09-28 20:36 BlueEngine

            問個問題:看上了wxWidgets的i18n,如何利用它來實現現有MFC程序的國際化?各位朋友請給個建議。  回復 更多評論

            # re: ACE與ASIO之間關于Socket編程的比較 2007-09-29 09:28 金慶

            @BlueEngine
            以前做過MFC兩套資源來實現中英語言版本。如是只是兩個語言,就沒必要用i18n。當然如果會用wxWidgets的i18n,或者用過,可能選它是正確的選擇。  回復 更多評論

            # re: ACE與ASIO之間關于Socket編程的比較 2007-12-19 15:37 金慶

            @missdeer
            不知占用CPU很厲害的原因找到沒有?我試了asio的幾個例子,都還不錯。只要理解了Proactor模式,使用上應該是相當方便的。  回復 更多評論

            # re: ACE與ASIO之間關于Socket編程的比較[未登錄] 2007-12-19 21:30 missdeer

            平常小數據量傳輸是看不出什么,但如果數據量一大,就很明顯了,你可以試試它的一個http client例子,讓它下載一個1M大小的文件,不管你的網絡環境如何,都會很占CPU。  回復 更多評論

            # re: ACE與ASIO之間關于Socket編程的比較 2007-12-20 15:23 沐楓

            從版本號也能看出來。asio目前只有0.3.9,還遠未到開發完整。
            因此,成熟自然也遠未到。  回復 更多評論

            # re: ACE與ASIO之間關于Socket編程的比較 2007-12-20 17:11 金慶

            測了一下,確實是這樣。對于內網傳輸CPU占滿了,對外網(網速很低)沒有明顯的CPU占用。與網絡環境無關嗎?如果是低流量時占CPU,那肯定是有問題。數據流量大時,可以解釋為接收數據太忙,不過也是不正常(相比其它下載工具)。  回復 更多評論

            # re: ACE與ASIO之間關于Socket編程的比較 2008-01-29 15:08 lunny

            asio有兩個版本,一個依賴于boost的,將來會加入boot庫,同時也會發布一個獨立的,并不一定非要用依賴于boost的那個版本。  回復 更多評論

            # re: ACE與ASIO之間關于Socket編程的比較 2008-04-09 11:14 fafa

            @lunny
            依賴于boost那個版本比較好編譯嘛  回復 更多評論

            posted on 2008-04-18 20:47 肥仔 閱讀(1953) 評論(0)  編輯 收藏 引用 所屬分類: 網絡編程

            精品人妻伦九区久久AAA片69| 精品国产91久久久久久久a| 久久亚洲精品国产精品婷婷| 无码8090精品久久一区| 久久久久亚洲精品无码蜜桃| 国产91色综合久久免费分享| 久久久久国产| 久久精品国产亚洲AV电影| 国产亚洲成人久久| 久久久久久久人妻无码中文字幕爆 | 国产一区二区精品久久岳| 久久久这里只有精品加勒比| 久久精品九九亚洲精品天堂| 亚洲美日韩Av中文字幕无码久久久妻妇 | 亚洲av日韩精品久久久久久a| 97久久精品国产精品青草| 一本久久综合亚洲鲁鲁五月天| 久久国产高潮流白浆免费观看| 久久亚洲精品无码观看不卡| 国内精品久久久久影院免费| 亚洲欧美一区二区三区久久| 97超级碰碰碰碰久久久久| 精品久久久久久国产潘金莲| 久久AV无码精品人妻糸列| 国产精品久久精品| 亚洲精品乱码久久久久久| 欧美久久久久久精选9999| 精品熟女少妇a∨免费久久| 免费精品国产日韩热久久| 久久久久亚洲精品中文字幕| 狠狠久久亚洲欧美专区| 五月丁香综合激情六月久久| 精品久久久久久久国产潘金莲| 久久久久久无码国产精品中文字幕 | 久久青青国产| 97超级碰碰碰碰久久久久| 成人久久综合网| 国产视频久久| 久久人人超碰精品CAOPOREN| 久久伊人中文无码| 国产精品乱码久久久久久软件 |