1. 程式人生 > >wcf和web service的區別

wcf和web service的區別

【0】問題:

  1. WCF與 Web Service的區別是什麼?
  2. 和ASP.NET Web Service有什麼關係?
  3. WCF與ASP.NET Web Service的區別是什麼?

這是很多.NET開發人員容易搞錯的問題。面試的時候也經常遇到。而很多新手也會因為初次接觸WCF或者Web Service而陷入迷惑的境地,很多資料介紹的也不準確。我甚至和許多許多年開發經驗的開發人員討論這些問題,他們都無法分清二者的區別。相信很多人也被誤導。以下是最常見的錯誤觀點:

  1. Web Service太舊了;
  2. Web Service 就是 ASP.NET Web Service;
  3. WCF比Web Service效能好;
  4. WCF 比 ASP.NET Web Service快;
  5. WCF比Web Service速度快;
  6. WCF比Web Service強大;
  7. WCF比 Web Service安全;
  8. Web Service必將被WCF取代;
  9. WCF其實就是Web Service;
  10. 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宣稱的很多特性和優勢,我們無法理解,更無法體會。文中提到了很多微軟的早期技術如果都沒有接觸過,這些對比我們就無法有深刻的體會。