WCF与 Web Service的区别
【0】問(wèn)題:
這是很多.NET開發(fā)人員容易搞錯(cuò)的問(wèn)題。面試的時(shí)候也經(jīng)常遇到。而很多新手也會(huì)因?yàn)槌醮谓佑|WCF或者Web Service而陷入迷惑的境地,很多資料介紹的也不準(zhǔn)確。我甚至和許多許多年開發(fā)經(jīng)驗(yàn)的開發(fā)人員討論這些問(wèn)題,他們都無(wú)法分清二者的區(qū)別。相信很多人也被誤導(dǎo)。以下是最常見(jiàn)的錯(cuò)誤觀點(diǎn):
等等結(jié)論。這些觀點(diǎn)我相信很多人都聽說(shuō)或接觸過(guò)。后面我們會(huì)詳細(xì)分析每個(gè)觀點(diǎn)的錯(cuò)誤的原因。以后大家在學(xué)習(xí)和面試中也好有個(gè)參考。
——————————————————————————————————————–
下面有個(gè)類似的問(wèn)題是來(lái)自于WCF中文論壇,引用ymq:?
不錯(cuò)?
以前用web service用的比較多,基本熟悉了,最近接觸到WCF,也許是剛接觸的原因,感覺(jué)怎么比 web service 復(fù)雜的多,優(yōu)點(diǎn)好像也不是很明顯 。。。。。?
謝謝,我曾經(jīng)在WCF中文技術(shù)論壇里和他們討論過(guò)一個(gè)問(wèn)題。
——————————————————————————————————————–
下面我們來(lái)詳細(xì)討論一下二者的區(qū)別。Web Service和WCF的到底有什么區(qū)別。
【1】Web Service:嚴(yán)格來(lái)說(shuō)是行業(yè)標(biāo)準(zhǔn),也就是Web Service 規(guī)范,也稱作WS-*規(guī)范,既不是框架,也不是技術(shù)。
?????? 它有一套完成的規(guī)范體系標(biāo)準(zhǔn),而且在持續(xù)不斷的更新完善中。
?????? 它使用XML擴(kuò)展標(biāo)記語(yǔ)言來(lái)表示數(shù)據(jù)(這個(gè)是夸語(yǔ)言和平臺(tái)的關(guān)鍵)。微軟的Web服務(wù)實(shí)現(xiàn)稱為ASP.NET Web Service.它使用Soap簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議來(lái)實(shí)現(xiàn)分布式環(huán)境里應(yīng)用程序之間的數(shù)據(jù)交互。WSDL來(lái)實(shí)現(xiàn)服務(wù)接口相關(guān)的描述。此外Web services 可以注冊(cè)到UDDI中心.供其客戶查找使用。?
???? 后來(lái)微軟做了ASP.NET Web Service的安全,性能,數(shù)據(jù)加密、解密,托管宿主等多方面的擴(kuò)展,稱為WSE系列,這個(gè)是過(guò)度產(chǎn)品,最高到WSE3.0.后來(lái)就是WCF時(shí)代。(WCF分布式開發(fā)必備知識(shí)(4):Web Service?)
【2】ASP.NET Web Service:微軟提供了Web服務(wù)的開發(fā)框架,屬于ASP.NET Framework的一部分,但是支持早起的WS規(guī)范。比如SOAP1.1。?
【3】WCF:WCF 是一個(gè)分布式應(yīng)用的開發(fā)框架,屬于特定的技術(shù),或者平臺(tái)。既不是標(biāo)準(zhǔn)也不是規(guī)范。
??????? WCF其實(shí)一定程度上就是ASP.NET Web Service,因?yàn)樗С諻eb Service的行業(yè)標(biāo)準(zhǔn)和核心協(xié)議,因此ASP.NET Web Service和WSE能做的事情,它幾乎都能勝任,跨平臺(tái)和語(yǔ)言更不是問(wèn)題(數(shù)據(jù)也支持XML格式化,而且提供了自己的格式化器)。?
但是WCF作為微軟主推一個(gè)通訊組件或者平臺(tái),它的目標(biāo)不僅僅是在支持和集成Web Service,因?yàn)樗€兼容和具備了微軟早期很多技術(shù)的特性。?
???????? 根據(jù)微軟官方的解釋,WCF(之前的版本名為“Indigo”)是使用托管代碼建立和運(yùn)行面向服務(wù)(Service Oriented)應(yīng)用程序的統(tǒng)一框架。它使得開發(fā)者能夠建立一個(gè)跨平臺(tái)的安全、可信賴、事務(wù)性的解決方案,且能與已有系統(tǒng)兼容協(xié)作。WCF是微軟分布式應(yīng)用程序開發(fā)的集大成者,它整合了.Net平臺(tái)下所有的和分布式系統(tǒng)有關(guān)的技術(shù),如Enterprise Sevices(COM+).Net Remoting、Web Service(ASMX)、WSE3.0和MSMQ消息隊(duì)列。以通信(Communiation)范圍而論,它可以跨進(jìn)程、跨機(jī)器、跨子網(wǎng)、企業(yè)網(wǎng)乃至于 Internet;以宿主程序而論,可以以ASP.NET,EXE,WPF,Windows Forms,NT Service,COM+作為宿主(Host)。WCF可以支持的協(xié)議包括TCP,HTTP,跨進(jìn)程以及自定義,安全模式則包括SAML, Kerberos,X509,用戶/密碼,自定義等多種標(biāo)準(zhǔn)與模式。也就是說(shuō),在WCF框架下,開發(fā)基于SOA的分布式系統(tǒng)變得容易了,微軟將所有與此相關(guān)的技術(shù)要素都包含在內(nèi),掌握了WCF,就相當(dāng)于掌握了叩開SOA大門的鑰匙。(MSDN)(WCF分布式開發(fā)步步為贏(1):WCF分布式框架基礎(chǔ)概念?)?
如果你想對(duì)WCF學(xué)習(xí)系統(tǒng)化一些,必須向?qū)θ鏓nterprise Sevices(COM+).Net Remoting、Web Service(ASMX)、WSE3.0和MSMQ消息隊(duì)列也有個(gè)詳細(xì)的認(rèn)識(shí)的話,你可以看看我的博客,在此之前我對(duì)WCF學(xué)習(xí)相關(guān)的知識(shí)都系統(tǒng)的進(jìn)行了整理。這個(gè)是文章目錄:老徐的博客:文章目錄 。?
還有一點(diǎn)就是,很多人對(duì)WCF學(xué)習(xí)感興趣,當(dāng)初我也是,直接奔WCF而來(lái),其實(shí)在后來(lái)的學(xué)習(xí)中感覺(jué)吃力,因?yàn)閃CF宣稱的很多特性和優(yōu)勢(shì),我們無(wú)法理解,更無(wú)法體會(huì)。文中提到了很多微軟的早期技術(shù)如果都沒(méi)有接觸過(guò),這些對(duì)比我們就無(wú)法有深刻的體會(huì)。
???????????? 建議先從基礎(chǔ)開始,然后在關(guān)注一些WCF較高級(jí)的應(yīng)用或者概念,循序漸進(jìn)。網(wǎng)上也有很多WCF學(xué)習(xí)的資料,等有了一定基礎(chǔ)以后可以看看付中凱大哥的講座,這個(gè)需要一定的基礎(chǔ)。?
原帖地址:?http://social.microsoft.com/Forums/zh-CN/wcfzhchs/thread/c06420d1-69ba-4aa6-abe5-242e3213b68f?
優(yōu)點(diǎn)的話,只有你學(xué)習(xí)使用以后才有體會(huì),等你開始學(xué)習(xí)了WCF你就會(huì)慢慢喜歡上它~很好的一個(gè)通信框架,這個(gè)是微軟SOA重要的技術(shù)框架。Biztalk里發(fā)布和調(diào)用WCF服務(wù)很常見(jiàn),它提供了豐富的適配器。你有興趣可以了解一下。~
?
【4】結(jié)論:
?? 那么我們看了這些分析以后,就可以知道以上的結(jié)論為什么錯(cuò)誤了。
不能哪一個(gè)技術(shù)框架和行業(yè)標(biāo)準(zhǔn)作比較,任何對(duì)于二者的比較 都是錯(cuò)誤的,因?yàn)閮烧吒徊辉谕粋€(gè)范疇里。就好比不能拿個(gè)汽車和交通法規(guī)比較一樣。這是個(gè)誤區(qū)。
看了這個(gè)文章,希望你對(duì)于WCF和WebService有個(gè)透徹的理解。
而不會(huì)再產(chǎn)生這樣的疑惑。
無(wú)論是參加面試,作為候選人,還是面試官,弄清楚這些基礎(chǔ)的問(wèn)題,相當(dāng)?shù)谋匾2灰鲇苿e人,也不要被別人忽悠。
技術(shù)人員應(yīng)該堅(jiān)持嚴(yán)謹(jǐn)?shù)膶W(xué)習(xí)態(tài)度。~
呵呵,希望對(duì)大家的學(xué)習(xí)有幫助~
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的WCF与 Web Service的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Css中Position属性的含义
- 下一篇: ant编译重设property的值