艾伟:WCF从理论到实践(2):决战紫禁之巅
本系列文章導(dǎo)航
WCF從理論到實(shí)踐(1):揭開(kāi)神秘面紗
WCF從理論到實(shí)踐(2):決戰(zhàn)紫禁之巔
WCF從理論到實(shí)踐(3):八號(hào)當(dāng)鋪之黑色契約
WCF從理論到實(shí)踐(4):路在何方
WCF從理論到實(shí)踐(5):Binding細(xì)解
WCF從理論到實(shí)踐(6):WCF架構(gòu)
WCF從理論到實(shí)踐(7):消息交換模式
WCF從理論到實(shí)踐(8):事件廣播
WCF從理論到實(shí)踐(9):實(shí)例模式和對(duì)象生命周期
WCF從理論到實(shí)踐(10):異常處理
WCF從理論到實(shí)踐(11)-異步
WCF從理論到實(shí)踐(12):事務(wù)
WCF從理論到實(shí)踐(13):事務(wù)投票
WCF從理論到實(shí)踐(14):WCF解決方案模板
WCF從理論到實(shí)踐(15):響應(yīng)變化
WCF從理論到實(shí)踐(16):操作重載(帶視頻+ppt+源碼)
WCF從理論到實(shí)踐(17):OO大背離(帶視頻+ppt+源碼)
本文的出發(fā)點(diǎn)
通過(guò)閱讀本文,能解決如下問(wèn)題:
?
本文適合的讀者
有過(guò)分布式開(kāi)發(fā)和SOA相關(guān)實(shí)施經(jīng)驗(yàn)的開(kāi)發(fā)人員
?
WCF與以往的分布式技術(shù)有何區(qū)別?
在上篇文章 WCF從理論到實(shí)踐一:揭開(kāi)神秘面紗 中曾經(jīng)闡述過(guò)WCF的前生今世,說(shuō)的比較概括,本文詳細(xì)的說(shuō)明WCF和以往的分布式技術(shù)的區(qū)別,目的是讓大家更詳細(xì)的了解WcF的應(yīng)用場(chǎng)合,為日后系統(tǒng)的架構(gòu)作鋪墊。首先先看下面這張對(duì)比表格
WCF與其他分布式技術(shù)對(duì)比表
| ? | Xml Web Service | .Net Remoting | Enterprice Service | WSE | MSMQ | WCF |
| 跨平臺(tái) | √ | ? | ? | ? | ? | √ |
| .Net與.Net通訊 | ? | √ | ? | ? | ? | √ |
| 分布式事務(wù) | ? | ? | √ | ? | ? | √ |
| 安全可靠性 | ? | ? | ? | √ | ? | √ |
| 消息隊(duì)列 | ? | ? | ? | ? | √ | √ |
上面的表格參考了Bruchzhang文章中的對(duì)比圖,原文地址: http://www.cnblogs.com/wayfarer/archive/2006/04/05/367474.html
從表格中我們可以看出,WCF似乎等于前面幾項(xiàng)技術(shù)之和,但事實(shí)并非如此,它既整合了原來(lái)的多項(xiàng)技術(shù),而且擁有著自己得天獨(dú)厚的優(yōu)點(diǎn),如下
:??WCF 在安全性方面做了哪些改進(jìn)?
為了保證數(shù)據(jù)通訊的安全,WCF提供了三種保護(hù)措施:1)機(jī)密性(Confidentiality)2)完整性(Integrity) 3)可驗(yàn)證性(Authentication),這三種措施聯(lián)合起來(lái)被稱為CIA。并且這些措施在WCF中是默認(rèn)支持的。機(jī)密性能保證傳輸?shù)臄?shù)據(jù)是經(jīng)過(guò)加密的,不被非法監(jiān)聽(tīng)(eavesdrop),而完整性利用數(shù)字簽名技術(shù)防止數(shù)據(jù)在傳輸過(guò)程中被注入(injected)或篡改(tampered),而驗(yàn)證(Authentication)可以采用靈活的策略來(lái)處理達(dá)到的客戶端請(qǐng)求,比如用戶名密碼驗(yàn)證,客戶端證書驗(yàn)證等。為了顯示W(wǎng)CF在安全性方面的特點(diǎn)和優(yōu)點(diǎn),我制作了演示程序:Security_Compare方案,這個(gè)方案主要通過(guò)對(duì)比wcf和xml web service的消息來(lái)表現(xiàn)wcf在安全方面的改進(jìn),工程清單如下:
| ProjectName(項(xiàng)目名稱) | Remark(備注) |
| Wcf | WCF的服務(wù)端程序,默認(rèn)創(chuàng)建,功能未經(jīng)修改 |
| WcfClient | WCF程序的客戶端,用于調(diào)用Wcf |
| WebService | Xml Web Service服務(wù)程序,完成功能和Wcf一樣 |
| WsClient | 是Xml Web Service的客戶端,用于調(diào)用WebService |
為了跟蹤Web Service和WCF的消息,我們還需要了解一下兩個(gè)工具:
原來(lái)一直用Trace Utilty來(lái)跟蹤xml web service的消息報(bào)文,非常好用,它能按包顯示出Soap信息,看起來(lái)也非常方便。有關(guān)它的消息,請(qǐng)從http://www.microsoft.com/downloads/details.aspx?FamilyId=C943C0DD-CEEC-4088-9753-86F052EC8450&displaylang=en 上下載SOAP Toolkit 3.0,安裝后,便出現(xiàn)了這個(gè)工具,在跟蹤xml web service的消息報(bào)文的時(shí)候,這個(gè)工具很好用,但跟蹤wcf的報(bào)文卻不行,能截獲到數(shù)據(jù),但每個(gè)報(bào)文都是空的,可能也和wcf報(bào)文是經(jīng)過(guò)加密的有關(guān)系吧, 搜索了一下,在artech的blog中發(fā)現(xiàn)這么一篇文章:[原創(chuàng)]我的WCF之旅(9):如何在WCF中使用tcpTrace來(lái)進(jìn)行Soap Trace,解決了我不能跟蹤wcf消息報(bào)文的難題,他也提到Trace Utilty不能跟蹤wcf,同時(shí)建議大家使用tcpTrace,并且說(shuō)明了使用方法,對(duì)tcpTrace不熟悉的同學(xué)可以到他的blog上學(xué)習(xí),很實(shí)用,我在這里就不再贅述。
經(jīng)過(guò)我的跟蹤,我分別將Xml web Service的消息log到ws.txt中,將wcf的消息log到wcf.txt中,您可以從下面的本文相關(guān)文件下載中獲取這兩個(gè)文件,觀察二者在消息上的不同。用于演示的示例解決方案您也在相關(guān)文件下載中獲得。
?
WCF在性能方面有那些改進(jìn)?
大家都知道,越復(fù)雜,結(jié)構(gòu)層次越多的框架一般效率也越低,WCF是以往其他分布式技術(shù)的集成者,它結(jié)構(gòu)相對(duì)復(fù)雜,且由于默認(rèn)支持安全傳輸,在性能上應(yīng)該不如Xml Web Service技術(shù),更不用和.Net Remoting等比較,這是一個(gè)有框架設(shè)計(jì)經(jīng)驗(yàn)和架構(gòu)師們都明白的簡(jiǎn)單道理,但是事實(shí)怎么樣呢?wcf比xml web service性能到底是高還是底,低要低多少?這些問(wèn)題很值得大家的研究和討論,其實(shí)已經(jīng)有人在此方面做了很詳細(xì)的對(duì)比,msdn上便有一篇專門介紹此方面知識(shí)的文章: WCF Performance Comparison?,對(duì)wcf性能感興趣的同學(xué),可以到這文章中學(xué)習(xí)。很詳盡。限于條件的限制,我這里只在我一臺(tái)機(jī)器上作一個(gè)簡(jiǎn)單的對(duì)比,僅供參考。分別測(cè)試循環(huán)1000次對(duì)wcf和xml web service相同功能方法的調(diào)用,得到如下的數(shù)據(jù):
?
| ? | WCF | Web Service |
| 第一次 | 9523ms | 7561ms |
| 第二次 | 9480ms | 7465ms |
| 第三次 | 9508ms | 7708ms |
| 第四次 | 9487ms | 7900ms |
經(jīng)過(guò)四次測(cè)試數(shù)據(jù),我們可以得出,wcf的性能和xml web service相比的確要低,但差別不大,肯定在一個(gè)數(shù)量級(jí)之上。有關(guān)測(cè)試性能的解決方案Perfermence_Compare您能在相關(guān)文件下載中獲得。
?
WCF開(kāi)發(fā)模型和以往的其他分布式技術(shù)有何區(qū)別?
WCF不僅僅在功能上集成了以往的分布式開(kāi)發(fā)技術(shù),而且在編程模型中充分吸取原來(lái)技術(shù)的優(yōu)點(diǎn),如xml web service的聲明性編程(declareable),和.net remoting中的配置(configuration)和wse中的安全策略聲明性配置方法,這樣wcf雖然功能強(qiáng)大,而且學(xué)習(xí)簡(jiǎn)單,便于推廣。在vs2008中還集成了WCF Test Client,開(kāi)發(fā)服務(wù)的時(shí)候,甚至不需要再開(kāi)發(fā)測(cè)試客戶端就能用WCF Test Client來(lái)進(jìn)行調(diào)用,簡(jiǎn)單之極,示例程序更是無(wú)需更改以行代碼,便可以運(yùn)行。
上面這些是說(shuō)了wse編程的簡(jiǎn)單易學(xué)性,我總結(jié)出來(lái),主要包括以下幾種特性
?
相關(guān)示例文件
?
示例程序和本文對(duì)比測(cè)試的平臺(tái)依據(jù)
windows xp sp2 + visual studio.net 2008 rtm
?
參考資料
轉(zhuǎn)載于:https://www.cnblogs.com/waw/archive/2011/08/29/2156926.html
總結(jié)
以上是生活随笔為你收集整理的艾伟:WCF从理论到实践(2):决战紫禁之巅的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 具有全局观的网络拓扑
- 下一篇: 5230主题下载