金慶的專欄
C++博客
::
首頁
::
新隨筆
::
聯系
::
聚合
::
管理
::
423 隨筆 :: 0 文章 :: 454 評論 :: 0 Trackbacks
公告
我的隨筆
我的評論
我參與的隨筆
留言簿
(12)
給我留言
查看公開留言
查看私人留言
隨筆分類
(502)
1. C/C++(166)
(rss)
2. 網游開發(108)
(rss)
3. Golang(20)
(rss)
4. Linux/Unix(30)
(rss)
5. 軟工與管理(44)
(rss)
6. Python(23)
(rss)
7. Erlang(18)
(rss)
8. Rust(16)
(rss)
9. 其它(77)
(rss)
隨筆檔案
(423)
2023年1月 (1)
2022年11月 (1)
2022年10月 (2)
2022年9月 (1)
2022年4月 (6)
2022年1月 (2)
2021年12月 (4)
2021年11月 (6)
2021年10月 (2)
2021年9月 (2)
2021年8月 (7)
2021年7月 (2)
2021年5月 (2)
2021年3月 (1)
2021年2月 (2)
2021年1月 (1)
2020年12月 (1)
2020年10月 (1)
2020年9月 (5)
2020年8月 (1)
2020年7月 (1)
2020年6月 (1)
2020年4月 (2)
2020年3月 (3)
2020年2月 (3)
2020年1月 (1)
2019年12月 (1)
2019年9月 (2)
2019年4月 (2)
2019年1月 (1)
2018年12月 (1)
2018年11月 (3)
2018年10月 (1)
2018年9月 (3)
2018年8月 (3)
2018年7月 (2)
2018年6月 (4)
2018年5月 (4)
2018年4月 (4)
2018年3月 (1)
2018年1月 (2)
2017年12月 (2)
2017年11月 (3)
2017年10月 (3)
2017年8月 (7)
2017年7月 (1)
2017年6月 (1)
2017年5月 (3)
2017年4月 (3)
2017年3月 (3)
2017年2月 (2)
2017年1月 (2)
2016年12月 (5)
2016年11月 (2)
2016年10月 (2)
2016年9月 (1)
2016年8月 (6)
2016年7月 (3)
2016年6月 (2)
2016年5月 (4)
2016年4月 (2)
2016年3月 (2)
2016年1月 (3)
2015年12月 (2)
2015年11月 (2)
2015年10月 (1)
2015年8月 (2)
2015年7月 (1)
2015年6月 (1)
2015年5月 (4)
2015年4月 (3)
2015年3月 (4)
2015年2月 (5)
2015年1月 (4)
2014年12月 (3)
2014年11月 (3)
2014年10月 (2)
2014年9月 (3)
2014年8月 (1)
2014年4月 (4)
2014年3月 (1)
2014年2月 (4)
2014年1月 (5)
2013年12月 (5)
2013年11月 (5)
2013年9月 (2)
2013年8月 (2)
2013年7月 (2)
2013年6月 (2)
2013年5月 (1)
2013年1月 (2)
2012年12月 (1)
2012年11月 (1)
2012年9月 (1)
2012年8月 (3)
2012年7月 (2)
2012年6月 (1)
2012年4月 (3)
2012年3月 (2)
2012年2月 (3)
2012年1月 (2)
2011年11月 (2)
2011年10月 (3)
2011年9月 (2)
2011年8月 (2)
2011年7月 (3)
2011年6月 (2)
2011年5月 (3)
2011年1月 (2)
2010年12月 (1)
2010年11月 (2)
2010年10月 (2)
2010年9月 (3)
2010年8月 (2)
2010年7月 (3)
2010年6月 (1)
2010年5月 (3)
2010年4月 (3)
2010年3月 (5)
2010年2月 (4)
2010年1月 (4)
2009年12月 (2)
2009年11月 (3)
2009年10月 (4)
2009年9月 (3)
2009年8月 (2)
2009年7月 (4)
2009年6月 (1)
2009年5月 (3)
2009年4月 (4)
2009年3月 (2)
2009年2月 (5)
2009年1月 (1)
2008年12月 (7)
2008年11月 (4)
2008年10月 (1)
2008年9月 (3)
2008年8月 (4)
2008年7月 (3)
2008年6月 (4)
2008年5月 (6)
2008年4月 (7)
2008年3月 (6)
2008年1月 (5)
2007年12月 (7)
2007年11月 (4)
2007年10月 (5)
2007年9月 (6)
2007年8月 (8)
2007年7月 (5)
相冊
公告照片
搜索
積分與排名
積分 - 653816
排名 - 25
最新評論
1.?re: boost::asio::spawn 將一統C++網絡庫
asio 成為C++首選網絡庫
--linda
2.?re: log4cxx中文輸出錯誤補丁
評論內容較長,點擊標題查看
--金慶
3.?re: mingw編譯OrzNet
能發送一個mingw編譯好的OrzNet庫給我嗎? liuweiqcxy@163.com
謝謝!
--劉威
4.?re: log4cxx中文輸出錯誤補丁
評論內容較長,點擊標題查看
--bigbad
5.?re: log4cxx中文輸出錯誤補丁
評論內容較長,點擊標題查看
--bigbad
閱讀排行榜
1.?"multiple definition of" 錯誤(11016)
2.?SVN中邪惡的replace(10937)
3.?VS2005編譯libevent(10404)
4.?混音算法的學習與研究(10183)
5.?C調用lua腳本的效率測試(9002)
評論排行榜
1.?VC6正在被拋棄(35)
2.?VS2005編譯libevent(21)
3.?"multiple definition of" 錯誤(18)
4.?C++引用優于指針(17)
5.?ACE與ASIO之間關于Socket編程的比較(16)
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
金慶
閱讀(5295)
評論(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
我也希望是自己寫的代碼的問題,畢竟要選擇用一個框架來進行開發,對于一個穩重的項目組來說是很大的一個決心??墒俏矣玫臏y試代碼就是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那個版本比較好編譯嘛
回復
更多評論
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
相關文章:
How are dtLinks created in NavMesh
C++ parameter passing rules
Naming Conventions for Accessors
Visual Studio 2019 Compiler Hangs
Fbx File Format Identifier
查找內存錯誤
std::thread 中的異常會丟失調用棧
用賦值代替 protobuf CopyFrom()
vs2017 linux 編譯輸出改成 vs 格式
為 LiteIDE 添加選中標記
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © 金慶
色播久久人人爽人人爽人人片aV
|
久久国产色av免费看
|
久久AV高清无码
|
99久久免费国产精精品
|
久久99精品久久久久久不卡
|
久久最新免费视频
|
日本欧美久久久久免费播放网
|
久久精品亚洲乱码伦伦中文
|
久久夜色精品国产www
|
亚洲国产精品无码久久久秋霞2
|
久久精品国产69国产精品亚洲
|
精品久久久久久久中文字幕
|
亚洲午夜无码久久久久
|
国产伊人久久
|
国产精品美女久久久久
|
欧美黑人激情性久久
|
精品久久久无码中文字幕
|
久久国产精品77777
|
久久综合狠狠综合久久97色
|
久久精品一区二区
|
色狠狠久久AV五月综合
|
久久影院久久香蕉国产线看观看
|
久久精品国产网红主播
|
亚洲精品乱码久久久久久
|
久久久久国色AV免费看图片
|
久久久综合九色合综国产
|
久久久一本精品99久久精品88
|
国产AⅤ精品一区二区三区久久
|
久久精品国产欧美日韩99热
|
国产精品青草久久久久福利99
|
久久婷婷五月综合色高清
|
日韩精品无码久久一区二区三
|
欧美激情精品久久久久
|
18岁日韩内射颜射午夜久久成人
|
AV无码久久久久不卡蜜桃
|
久久99国产精品久久
|
久久精品国产一区二区三区日韩
|
99久久精品影院老鸭窝
|
日韩精品国产自在久久现线拍
|
久久综合欧美成人
|
国产精品99久久精品爆乳
|