金慶的專欄
C++博客
::
首頁(yè)
::
新隨筆
::
聯(lián)系
::
聚合
::
管理
::
423 隨筆 :: 0 文章 :: 454 評(píng)論 :: 0 Trackbacks
公告
我的隨筆
我的評(píng)論
我參與的隨筆
留言簿
(12)
給我留言
查看公開(kāi)留言
查看私人留言
隨筆分類
(502)
1. C/C++(166)
(rss)
2. 網(wǎng)游開(kāi)發(fā)(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)
相冊(cè)
公告照片
搜索
積分與排名
積分 - 654350
排名 - 25
最新評(píng)論
1.?re: boost::asio::spawn 將一統(tǒng)C++網(wǎng)絡(luò)庫(kù)
asio 成為C++首選網(wǎng)絡(luò)庫(kù)
--linda
2.?re: log4cxx中文輸出錯(cuò)誤補(bǔ)丁
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--金慶
3.?re: mingw編譯OrzNet
能發(fā)送一個(gè)mingw編譯好的OrzNet庫(kù)給我嗎? liuweiqcxy@163.com
謝謝!
--劉威
4.?re: log4cxx中文輸出錯(cuò)誤補(bǔ)丁
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--bigbad
5.?re: log4cxx中文輸出錯(cuò)誤補(bǔ)丁
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--bigbad
閱讀排行榜
1.?"multiple definition of" 錯(cuò)誤(11017)
2.?SVN中邪惡的replace(10939)
3.?VS2005編譯libevent(10405)
4.?混音算法的學(xué)習(xí)與研究(10184)
5.?C調(diào)用lua腳本的效率測(cè)試(9003)
評(píng)論排行榜
1.?VC6正在被拋棄(35)
2.?VS2005編譯libevent(21)
3.?"multiple definition of" 錯(cuò)誤(18)
4.?C++引用優(yōu)于指針(17)
5.?ACE與ASIO之間關(guān)于Socket編程的比較(16)
ACE與ASIO之間關(guān)于Socket編程的比較
ACE與ASIO之間關(guān)于Socket編程的比較
轉(zhuǎn)自:
FREE MY SOUL
ACE是一個(gè)很成熟的中間件產(chǎn)品,為自適應(yīng)通訊環(huán)境,但它過(guò)于宏大,一堆的設(shè)計(jì)模式,架構(gòu)是一層又一層,對(duì)初學(xué)者來(lái)說(shuō),有點(diǎn)困難。
ASIO是基本Boost開(kāi)發(fā)的異步IO庫(kù),封裝了Socket,簡(jiǎn)化基于socket程序的開(kāi)發(fā)。
最近分析ASIO的源代碼,讓我無(wú)不驚呀于它設(shè)計(jì)。在ACE中開(kāi)發(fā)中的內(nèi)存管理一直讓人頭痛,ASIO的出現(xiàn),讓我看到新的曙光,成為我新的好伙伴。簡(jiǎ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,提供簡(jiǎn)單的線程操作。
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主要是注冊(cè)handler類,當(dāng)事件分派時(shí),調(diào)用其handler的虛掛勾函數(shù)。實(shí)現(xiàn)ACE_Handler/ACE_Svc_Handler/ACE_Event_handler等類的虛函數(shù)。
ASIO是基于函數(shù)對(duì)象的hanlder事件分派。任何函數(shù)都可能成功hanlder,少了一堆虛表的維護(hù),調(diào)度上優(yōu)于ACE。
6.發(fā)布方式:
ACE是開(kāi)源免費(fèi)的,不依賴于第3方庫(kù), 一般應(yīng)用使用它時(shí),以動(dòng)態(tài)鏈接的方式發(fā)布動(dòng)態(tài)庫(kù)。
ASIO是開(kāi)源免費(fèi)的,依賴Boost,應(yīng)用使用時(shí)只要include頭文件,不需動(dòng)態(tài)庫(kù)。
7.可移植性:
ACE支持多種平臺(tái),可移植性不存在問(wèn)題,據(jù)說(shuō)socket編程在linux下有不少bugs。
ASIO支持多種平臺(tái),可移植性不存在問(wèn)題。
8.開(kāi)發(fā)難度:
基于ACE開(kāi)發(fā)應(yīng)用,對(duì)程序員要求比較高,要用好它,必須非常了解其框架。在其框架下開(kāi)發(fā),往往new出一個(gè)對(duì)象,不知在什么地方釋放好。
基于ASIO開(kāi)發(fā)應(yīng)用,要求程序員熟悉函數(shù)對(duì)象,函數(shù)指針,熟悉boost庫(kù)中的boost::bind。內(nèi)存管理控制方便。
我個(gè)人覺(jué)得,如果應(yīng)用socket編程,使用ASIO開(kāi)發(fā)比較好,開(kāi)發(fā)效率比較高。ACE適合于理論研究,它本來(lái)就是源于Douglas的學(xué)術(shù)研究。
posted on 2007-09-21 10:27
金慶
閱讀(5296)
評(píng)論(16)
編輯
收藏
引用
所屬分類:
1. C/C++
評(píng)論
#
re: ACE與ASIO之間關(guān)于Socket編程的比較
2007-09-21 23:01
missdeer
發(fā)現(xiàn)asio占用CPU很厲害,而且不知道是不是我用得不對(duì),傳輸效率并不高。。。
回復(fù)
更多評(píng)論
#
re: ACE與ASIO之間關(guān)于Socket編程的比較
2007-09-22 10:15
金慶
@missdeer
ACE,asio都沒(méi)用過(guò)。只是用了boost中幾個(gè)庫(kù)之后,對(duì)boost有好感。以前的網(wǎng)絡(luò)編程都是直接用socket。是否選用asio還需要自己考察。
回復(fù)
更多評(píng)論
#
re: ACE與ASIO之間關(guān)于Socket編程的比較[未登錄](méi)
2007-09-24 16:16
exile
asio本身并不占用多少資源, 如果網(wǎng)絡(luò)連接數(shù)不多,但占用CPU很厲害, 那肯定時(shí)是自己寫(xiě)的程序某個(gè)地方出了問(wèn)題.
回復(fù)
更多評(píng)論
#
re: ACE與ASIO之間關(guān)于Socket編程的比較
2007-09-24 23:34
missdeer
@exile
我也希望是自己寫(xiě)的代碼的問(wèn)題,畢竟要選擇用一個(gè)框架來(lái)進(jìn)行開(kāi)發(fā),對(duì)于一個(gè)穩(wěn)重的項(xiàng)目組來(lái)說(shuō)是很大的一個(gè)決心。可是我用的測(cè)試代碼就是asio自帶的例子程序,其它相關(guān)的文檔提及的也少……
回復(fù)
更多評(píng)論
#
re: ACE與ASIO之間關(guān)于Socket編程的比較[未登錄](méi)
2007-09-25 10:56
eXile
@missdeer
那就應(yīng)該分析一下測(cè)試的環(huán)境. 看一下有連接時(shí),無(wú)連接時(shí), 局域網(wǎng)中, 公網(wǎng)中.
asio本身帶的例子是很簡(jiǎn)單的, 都是用法演示,最多也就服務(wù)器設(shè)定幾個(gè)線程.
在局域網(wǎng)中進(jìn)行這樣的測(cè)試是沒(méi)有什么意義的.
boost 的 thread 和asio都是有可能作為系統(tǒng)支持庫(kù)進(jìn)入std::tr2的.
回復(fù)
更多評(píng)論
#
re: ACE與ASIO之間關(guān)于Socket編程的比較
2007-09-27 17:05
金慶
@missdeer
我下載了asio 0.3.8準(zhǔn)備試試它的例子。不過(guò)發(fā)現(xiàn)asio不支持VC6。boost其它庫(kù)都是支持VC6的,而asio只支持VC7.1和VC8。
回復(fù)
更多評(píng)論
#
re: ACE與ASIO之間關(guān)于Socket編程的比較
2007-09-27 21:53
missdeer
@金慶
如果要用Boost之類的模板庫(kù),強(qiáng)烈建議放棄VC6,改用7.1或8.0,無(wú)論從編譯器對(duì)標(biāo)準(zhǔn)的兼容,還是第三方庫(kù)對(duì)編譯器的支持上看,7.1都遠(yuǎn)遠(yuǎn)好于6.0
回復(fù)
更多評(píng)論
#
re: ACE與ASIO之間關(guān)于Socket編程的比較
2007-09-28 09:06
金慶
@missdeer
我想的是放棄VC。只要我掌握了wxWidgets,就可以拋棄MFC,然后拋棄VC。
回復(fù)
更多評(píng)論
#
re: ACE與ASIO之間關(guān)于Socket編程的比較
2007-09-28 20:36
BlueEngine
問(wèn)個(gè)問(wèn)題:看上了wxWidgets的i18n,如何利用它來(lái)實(shí)現(xiàn)現(xiàn)有MFC程序的國(guó)際化?各位朋友請(qǐng)給個(gè)建議。
回復(fù)
更多評(píng)論
#
re: ACE與ASIO之間關(guān)于Socket編程的比較
2007-09-29 09:28
金慶
@BlueEngine
以前做過(guò)MFC兩套資源來(lái)實(shí)現(xiàn)中英語(yǔ)言版本。如是只是兩個(gè)語(yǔ)言,就沒(méi)必要用i18n。當(dāng)然如果會(huì)用wxWidgets的i18n,或者用過(guò),可能選它是正確的選擇。
回復(fù)
更多評(píng)論
#
re: ACE與ASIO之間關(guān)于Socket編程的比較
2007-12-19 15:37
金慶
@missdeer
不知占用CPU很厲害的原因找到?jīng)]有?我試了asio的幾個(gè)例子,都還不錯(cuò)。只要理解了Proactor模式,使用上應(yīng)該是相當(dāng)方便的。
回復(fù)
更多評(píng)論
#
re: ACE與ASIO之間關(guān)于Socket編程的比較[未登錄](méi)
2007-12-19 21:30
missdeer
平常小數(shù)據(jù)量傳輸是看不出什么,但如果數(shù)據(jù)量一大,就很明顯了,你可以試試它的一個(gè)http client例子,讓它下載一個(gè)1M大小的文件,不管你的網(wǎng)絡(luò)環(huán)境如何,都會(huì)很占CPU。
回復(fù)
更多評(píng)論
#
re: ACE與ASIO之間關(guān)于Socket編程的比較
2007-12-20 15:23
沐楓
從版本號(hào)也能看出來(lái)。asio目前只有0.3.9,還遠(yuǎn)未到開(kāi)發(fā)完整。
因此,成熟自然也遠(yuǎn)未到。
回復(fù)
更多評(píng)論
#
re: ACE與ASIO之間關(guān)于Socket編程的比較
2007-12-20 17:11
金慶
測(cè)了一下,確實(shí)是這樣。對(duì)于內(nèi)網(wǎng)傳輸CPU占滿了,對(duì)外網(wǎng)(網(wǎng)速很低)沒(méi)有明顯的CPU占用。與網(wǎng)絡(luò)環(huán)境無(wú)關(guān)嗎?如果是低流量時(shí)占CPU,那肯定是有問(wèn)題。數(shù)據(jù)流量大時(shí),可以解釋為接收數(shù)據(jù)太忙,不過(guò)也是不正常(相比其它下載工具)。
回復(fù)
更多評(píng)論
#
re: ACE與ASIO之間關(guān)于Socket編程的比較
2008-01-29 15:08
lunny
asio有兩個(gè)版本,一個(gè)依賴于boost的,將來(lái)會(huì)加入boot庫(kù),同時(shí)也會(huì)發(fā)布一個(gè)獨(dú)立的,并不一定非要用依賴于boost的那個(gè)版本。
回復(fù)
更多評(píng)論
#
re: ACE與ASIO之間關(guān)于Socket編程的比較
2008-04-09 11:14
fafa
@lunny
依賴于boost那個(gè)版本比較好編譯嘛
回復(fù)
更多評(píng)論
刷新評(píng)論列表
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
【推薦】100%開(kāi)源!大型工業(yè)跨平臺(tái)軟件C++源碼提供,建模,組態(tài)!
相關(guān)文章:
How are dtLinks created in NavMesh
C++ parameter passing rules
Naming Conventions for Accessors
Visual Studio 2019 Compiler Hangs
Fbx File Format Identifier
查找內(nèi)存錯(cuò)誤
std::thread 中的異常會(huì)丟失調(diào)用棧
用賦值代替 protobuf CopyFrom()
vs2017 linux 編譯輸出改成 vs 格式
為 LiteIDE 添加選中標(biāo)記
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問(wèn)
Chat2DB
管理
Powered by:
C++博客
Copyright © 金慶
久久国产精品波多野结衣AV
|
7国产欧美日韩综合天堂中文久久久久
|
久久超乳爆乳中文字幕
|
久久天堂电影网
|
精产国品久久一二三产区区别
|
久久99精品国产99久久
|
中文字幕精品无码久久久久久3D日动漫
|
亚洲色大成网站www久久九
|
91精品国产高清久久久久久91
|
亚洲美日韩Av中文字幕无码久久久妻妇
|
99久久99这里只有免费的精品
|
久久精品国产只有精品66
|
蜜臀久久99精品久久久久久小说
|
99久久夜色精品国产网站
|
久久青青草原亚洲av无码app
|
久久久91人妻无码精品蜜桃HD
|
久久精品黄AA片一区二区三区
|
亚洲国产一成久久精品国产成人综合
|
久久无码人妻一区二区三区
|
色综合久久88色综合天天
|
色综合久久久久网
|
久久99国产综合精品女同
|
久久久久久精品久久久久
|
色婷婷噜噜久久国产精品12p
|
国产精品一区二区久久精品无码
|
精品无码久久久久国产
|
亚洲国产欧洲综合997久久
|
97精品伊人久久大香线蕉
|
一本久道久久综合狠狠躁AV
|
久久精品国产精品亚洲人人
|
狠狠久久综合伊人不卡
|
91麻精品国产91久久久久
|
久久午夜福利无码1000合集
|
久久人人爽人人澡人人高潮AV
|
中文字幕久久欲求不满
|
久久久国产精品福利免费
|
伊人久久综合无码成人网
|
久久精品国产亚洲AV不卡
|
欧美伊人久久大香线蕉综合
|
久久人人爽人人爽人人片AV高清
|
中文精品久久久久人妻
|