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時代。

【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大門的鑰匙 。如果你想對WCF學習系統化一些,必須向對如Enterprise Sevices(COM+).Net Remoting、Web Service(ASMX)、WSE3.0和MSMQ消息隊列也有個詳細的認識的話,你可以看看我的博客,在此之前我對WCF學習相關的知識都系統的進行了整理。這個是文章目錄:老徐的博客:文章目錄 。
還有一點就是,很多人對WCF學習感興趣,當初我也是,直接奔WCF而來,其實在後來的學習中感覺吃力,因爲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支持的各種協議中:每種協議中消息都有不同的傳輸格式、不同的編碼格式等等,WCF 以統一的方式來調用各種編碼器、進行傳輸。假如以後有新的協議出現,WCF並不用更改現有的框架、只用針對該協議做擴展就可以支持該協議了。這就很好地適應了變化,可以說WCF是封裝變化的絕佳實踐。

  再來談談你的問題,WCF與Web 服務是什麼關係,WCF 能夠創建兼容 Web 服務的服務,也就是說可以創建能夠與Web 服務互聯互通的服務,他們兩個並不能用簡單包含或者等同關係來表述。WCF 是一套框架,用來創建各種服務。其中包括創建 Web服務(採用 basicHttpBinding綁定的服務就是一個Web 服務)。

WCF可以不依賴於IIS。
WCF可以配置成BasicHttpBinding來兼容(或者說變身成)WS。
WCF可以基於TCP或者MessegeQueue來傳輸數據。
WCF的可配置性比WS強,比如安全性。
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 支持多種併發模式:單例、單調、會話 。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章