金慶的專欄
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)
相冊
公告照片
搜索
積分與排名
積分 - 653850
排名 - 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
|
国产精品免费久久
|
一本色道久久88精品综合
|
久久精品国产欧美日韩
|
午夜欧美精品久久久久久久
|
久久久久久国产a免费观看不卡
|
精品久久久久久中文字幕大豆网
|
狠狠色丁香久久综合五月
|
久久精品成人欧美大片
|
久久国产成人亚洲精品影院
|
奇米影视7777久久精品
|
一级a性色生活片久久无少妇一级婬片免费放
|
久久亚洲欧美国产精品
|
亚洲欧洲精品成人久久奇米网
|
久久99免费视频
|
久久精品国产99久久无毒不卡
|
国产香蕉久久精品综合网
|
国产毛片久久久久久国产毛片
|
欧美久久精品一级c片片
|
久久久国产精品亚洲一区
|
色综合久久综精品
|
久久精品国产第一区二区三区
|
久久精品视频一
|
国产免费久久精品99re丫y
|
四虎国产精品成人免费久久
|
精品国产91久久久久久久a
|
2019久久久高清456
|
性高朝久久久久久久久久
|
欧美久久久久久午夜精品
|
欧美无乱码久久久免费午夜一区二区三区中文字幕
|
亚洲äv永久无码精品天堂久久
|
国产一久久香蕉国产线看观看
|