请问WCF 跟 WebService之间异同
From:?http://tommyhu.cn/wcf-WebService-qu-bie/
問題:
WCF與 Web Service的區別是什么?
和ASP.NET Web Service有什么關系?
WCF與ASP.NET Web Service的區別是什么?
這是很多.NET開發人員容易搞錯的問題。面試的時候也經常遇到。而很多新手也會因為初次接觸WCF或者Web Service而陷入迷惑的境地,很多資料介紹的也不準確。我甚至和許多許多年開發經驗的開發人員討論這些問題,他們都無法分清二者的區別。相信很多人也被誤導。以下是最常見的錯誤觀點:
Web Service太舊了;
Web Service 就是 ASP.NET Web Service;
WCF比Web Service性能好;
WCF 比 ASP.NET Web Service快;
WCF比Web Service速度快;
WCF比Web Service強大;
WCF比 Web Service安全;
Web Service必將被WCF取代;
WCF其實就是Web Service;
WCF非常簡單,其實沒有什么;
等等結論。這些觀點我相信很多人都聽說或接觸過。后面我們會詳細分析每個觀點的錯誤的原因。以后大家在學習和面試中也好有個參考。
——————————————————————————————————————–
WCF 支持多種通信協議 Http/Https 、TCP/UDP、MSMQ、命名管道、對等網、
消息可達性、事務流等。
WCF 可以與ASP.NET 集成、共享一個上下文(HttpContext)。
WCF 支持多種消息傳輸格式 :text,binary,mtom,Json 等。
WCF 安全性要強:支持對稱安全、非對稱安全、消息安全、傳輸安全、
SSL 流安全、Windows 流安全等。
WCF 支持多種會話模式:單向、雙向、請求/響應。
WCF 支持REST 。
WCF 支持多種格式化方式。DataContractSerializer、XmlSerializer、
??DataContractJsonSerializer 等。
WCF 支持 WAS hosting、Windows 服務 hosting、Self-Hosting、IIS hosting 等。
WCF 支持多種并發模式:單例、單調、會話
1.WebService:嚴格來說是行業標準,不是技術,使用XML擴展標記語言來表示數據(這個是夸語言和平臺的關鍵)。微
軟的Web服務實現稱為ASP.NET Web Service.它使用Soap簡單對象訪問協議來實現分布式環境里應用程序之間的數據交互。
WSDL來實現服務接口相關的描述。此外Web services 可以注冊到UDDI中心.供其客戶查找使用。
????后來微軟做了ASP.NET Web Service的安全,性能,數據加密、解密,托管宿主等多方面的擴展,稱為WSE系列,這個是過
度產品,最高到WSE3.0.后來就是WCF時代。
????2.WCF:其實一定程度上就是ASP.NET Web Service,因為它支持Web Service的行業標準和核心協議,因此ASP.NET Web Service
和WSE能做的事情,它幾乎都能勝任,跨平臺和語言更不是問題(數據也支持XML格式化,而且提供了自己的格式化器)。
????但是WCF作為微軟主推一個通訊組件或者平臺,它的目標不僅僅是在支持和集成Web Service,因為它還兼容和具備了微軟
早期很多技術的特性。
????根據微軟官方的解釋,WCF(之前的版本名為“Indigo”)是使用托管代碼建立和運行面向服務(Service Oriented)應用程
序的統一框架。它使得開發者能夠建立一個跨平臺的安全、可信賴、事務性的解決方案,且能與已有系統兼容協作。WCF
是微軟分布式應用程序開發的集大成者,它整合了.Net平臺下所有的和分布式系統有關的技術,如Enterprise Sevices
(COM+).Net Remoting、Web Service(ASMX)、WSE3.0和MSMQ消息隊列。以通信(Communiation)范圍而論,它可以跨進程、跨機器
、跨子網、企業網乃至于 Internet;以宿主程序而論,可以以ASP.NET,EXE,WPF,Windows Forms,NT Service,COM+作為宿
主(Host)。WCF可以支持的協議包括TCP,HTTP,跨進程以及自定義,安全模式則包括SAML, Kerberos,X509,用戶/密碼,
自定義等多種標準與模式。也就是說,在WCF框架下,開發基于SOA的分布式系統變得容易了,微軟將所有與此相關的技術
要素都包含在內,掌握了WCF,就相當于掌握了
下面有個類似的問題是來自于WCF中文論壇,引用ymq:?
不錯?
以前用web service用的比較多,基本熟悉了,最近接觸到WCF,也許是剛接觸的原因,感覺怎么比 web service 復雜的多,優點好像也不是很明顯 。。。。。?
謝謝,我曾經在WCF中文技術論壇里和他們討論過一個問題。
——————————————————————————————————————–
下面我們來詳細討論一下二者的區別。Web Service和WCF的到底有什么區別。
【1】Web Service:嚴格來說是行業標準,也就是Web Service 規范,也稱作WS-*規范,既不是框架,也不是技術。
?????? 它有一套完成的規范體系標準,而且在持續不斷的更新完善中。
?????? 它使用XML擴展標記語言來表示數據(這個是夸語言和平臺的關鍵)。微軟的Web服務實現稱為ASP.NET Web Service.它使用Soap簡單對象訪問協議來實現分布式環境里應用程序之間的數據交互。WSDL來實現服務接口相關的描述。此外Web services 可以注冊到UDDI中心.供其客戶查找使用。?
???? 后來微軟做了ASP.NET Web Service的安全,性能,數據加密、解密,托管宿主等多方面的擴展,稱為WSE系列,這個是過度產品,最高到WSE3.0.后來就是WCF時代。(WCF分布式開發必備知識(4):Web Service )
【2】ASP.NET Web Service:微軟提供了Web服務的開發框架,屬于ASP.NET Framework的一部分,但是支持早起的WS規范。比如SOAP1.1。?
【3】WCF:WCF 是一個分布式應用的開發框架,屬于特定的技術,或者平臺。既不是標準也不是規范。
????????WCF其實一定程度上就是ASP.NET Web Service,因為它支持Web Service的行業標準和核心協議,因此ASP.NET Web Service和WSE能做的事情,它幾乎都能勝任,跨平臺和語言更不是問題(數據也支持XML格式化,而且提供了自己的格式化器)。?
但是WCF作為微軟主推一個通訊組件或者平臺,它的目標不僅僅是在支持和集成Web Service,因為它還兼容和具備了微軟早期很多技術的特性。?
???????? 根據微軟官方的解釋,WCF(之前的版本名為“Indigo”)是使用托管代碼建立和運行面向服務(Service Oriented)應用程序的統一框架。它使得開發者能夠建立一個跨平臺的安全、可信賴、事務性的解決方案,且能與已有系統兼容協作。WCF是微軟分布式應用程序開發的集大成者,它整合了.Net平臺下所有的和分布式系統有關的技術,如Enterprise Sevices(COM+).Net Remoting、Web Service(ASMX)、WSE3.0和MSMQ消息隊列。以通信(Communiation)范圍而論,它可以跨進程、跨機器、跨子網、企業網乃至于 Internet;以宿主程序而論,可以以ASP.NET,EXE,WPF,Windows Forms,NT Service,COM+作為宿主(Host)。WCF可以支持的協議包括TCP,HTTP,跨進程以及自定義,安全模式則包括SAML, Kerberos,X509,用戶/密碼,自定義等多種標準與模式。也就是說,在WCF框架下,開發基于SOA的分布式系統變得容易了,微軟將所有與此相關的技術要素都包含在內,掌握了WCF,就相當于掌握了叩開SOA大門的鑰匙。(MSDN)(WCF分布式開發步步為贏(1):WCF分布式框架基礎概念 )?
如果你想對WCF學習系統化一些,必須向對如Enterprise Sevices(COM+).Net Remoting、Web Service(ASMX)、WSE3.0和MSMQ消息隊列也有個詳細的認識的話,你可以看看我的博客,在此之前我對WCF學習相關的知識都系統的進行了整理。這個是文章目錄:老徐的博客:文章目錄 。?
還有一點就是,很多人對WCF學習感興趣,當初我也是,直接奔WCF而來,其實在后來的學習中感覺吃力,因為WCF宣稱的很多特性和優勢,我們無法理解,更無法體會。文中提到了很多微軟的早期技術如果都沒有接觸過,這些對比我們就無法有深刻的體會。
???????????? 建議先從基礎開始,然后在關注一些WCF較高級的應用或者概念,循序漸進。網上也有很多WCF學習的資料,等有了一定基礎以后可以看看付中凱大哥的講座,這個需要一定的基礎。?
原帖地址:? http://social.microsoft.com/Forums/zh-CN/wcfzhchs/thread/c06420d1-69ba-4aa6-abe5-242e3213b68f ?
優點的話,只有你學習使用以后才有體會,等你開始學習了WCF你就會慢慢喜歡上它~很好的一個通信框架,這個是微軟SOA重要的技術框架。Biztalk里發布和調用WCF服務很常見,它提供了豐富的適配器。你有興趣可以了解一下。~
【4】結論:
?? 那么我們看了這些分析以后,就可以知道以上的結論為什么錯誤了。
不能哪一個技術框架和行業標準作比較,任何對于二者的比較 都是錯誤的,因為兩者根不不在同一個范疇里。就好比不能拿個汽車和交通法規比較一樣。這是個誤區。
Web Service太舊了:框架都版本的差異,功能特性上卻是有新舊之分,但是對于特定的系統,適合自己的就是最好的。
Web Service 就是 ASP.NET Web Service:同樣不是一個范疇。前者規范,后者是框架
WCF比Web Service性能好:不是一個范疇,
WCF 比 ASP.NET Web Service快:不一定,需要特定的限制條件,WCF使用BasicHttpBinding的時候與ASP.NET Web Service協議一樣。
WCF比Web Service速度快:同樣概念不嚴格。
WCF比Web Service強大:WCF卻是集成了多種微軟的分布式技術,但是這里應該嚴格說是:ASP.NET Web Service
WCF比 Web Service安全:不嚴格。其次WCF也可以開發完全裸奔的應用程序。
Web Service必將被WCF取代;Web Service不會被WCF取代!前者是一套廣泛使用的規范。如果說WCF能取代的是ASP.NET Web Service,因為二者都是.NET平臺上的技術。
WCF其實就是Web Service:WCF在某些情況下不遵守 Web服務規范,也就是可以開發非服務性質的應用。而且不能簡單等同。
WCF非常簡單,其實沒有什么:WCF雖然是個服務開發框架,但是如果你深入學習,會發現WCF架構的強大之處。單單是WCF安全這一塊已經相當的復雜了。況且還要統一編程模型,兼容和支持許多早期的分布式技術。很多人輕易下這樣的結論,一定是僅僅看了一些文章或書籍,不一定寫過代碼。高手不會這樣武斷地下結論。
看了這個文章,希望你對于WCF和WebService有個透徹的理解。
而不會再產生這樣的疑惑。
無論是參加面試,作為候選人,還是面試官,弄清楚這些基礎的問題,相當的必要。不要忽悠別人,也不要被別人忽悠。
技術人員應該堅持嚴謹的學習態度。~
呵呵,希望對大家的學習有幫助~
總結
以上是生活随笔為你收集整理的请问WCF 跟 WebService之间异同的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小程序colorui引入与使用
- 下一篇: 网狐框架分析一