WCF、WebAPI、WCFREST、WebService、WPF之間的區別


在.net平台下,有大量的技術讓你創建一個HTTP服務,像Web Service,WCF,現在又出了Web API。在.net平台下,你有很多的選擇來構建一個HTTP Services。我分享一下我對Web Service、WCF以及Web API的看法。

  Web Service

  1、它是基於SOAP協議的,數據格式是XML

  2、只支持HTTP協議

  3、它不是開源的,但可以被任意一個了解XML的人使用

  4、它只能部署在IIS上

 

  WCF

  1、這個也是基於SOAP的,數據格式是XML

  2、這個是Web Service(ASMX)的進化版,可以支持各種各樣的協議,像TCP,HTTP,HTTPS,Named Pipes, MSMQ.

  3、WCF的主要問題是,它配置起來特別的繁瑣

  4、它不是開源的,但可以被任意一個了解XML的人使用

  5、它可以部署應用程序中或者IIS上或者Windows服務中

 

  WCF Rest

  1、想使用WCF Rest service,你必須在WCF中使用webHttpBindings

  2、它分別用[WebGet]和[WebInvoke]屬性,實現了HTTP的GET和POST動詞

  3、要想使用其他的HTTP動詞,你需要在IIS中做一些配置,使.svc文件可以接受這些動詞的請求

  4、使用WebGet通過參數傳輸數據,也需要配置。而且必須指定UriTemplate

  5、它支持XML、JSON以及ATOM這些數據格式

 

  Web API

  1、這是一個簡單的構建HTTP服務的新框架

  2、在.net平台上Web API 是一個開源的、理想的、構建REST-ful 服務的技術

  3、不像WCF REST Service.它可以使用HTTP的全部特點(比如URIs、request/response頭,緩存,版本控制,多種內容格式)

  4、它也支持MVC的特征,像路由、控制器、action、filter、模型綁定、控制反轉(IOC)或依賴注入(DI),單元測試。這些可以使程序更簡單、更健壯

  5、它可以部署在應用程序和IIS上

  6、這是一個輕量級的框架,並且對限制帶寬的設備,比如智能手機等支持的很好

  7、Response可以被Web API的MediaTypeFormatter轉換成Json、XML 或者任何你想轉換的格式。

  

  WCF和WEB API我該選擇哪個?

  1、當你想創建一個支持消息、消息隊列、雙工通信的服務時,你應該選擇WCF

  2、當你想創建一個服務,可以用更快速的傳輸通道時,像TCP、Named Pipes或者甚至是UDP(在WCF4.5中),在其他傳輸通道不可用的時候也可以支持HTTP。

  3、當你想創建一個基於HTTP的面向資源的服務並且可以使用HTTP的全部特征時(比如URIs、request/response頭,緩存,版本控制,多種內容格式),你應該選擇Web API

  4、當你想讓你的服務用於瀏覽器、手機、iPhone和平板電腦時,你應該選擇Web API

  

 

一、定義

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,就相當於掌握了叩開SOA大門的鑰匙。

二、WCF的優勢  
1、統一性   前面已經敘述,WCF是對於ASMX,.Net Remoting,Enterprise Service,WSE,MSMQ等技術的整合。由於WCF完全是由托管代碼編寫,因此開發WCF的應用程序與開發其它的.Net應用程序沒有太大的區別,我們仍然可以像創建面向對象的應用程序那樣,利用WCF來創建面向服務的應用程序。

2、互操作性   由於WCF最基本的通信機制是SOAP(Simple Object Access Protocol 簡易對象訪問協議),這就保證了系統之間的互操作性,即使是運行不同的上下文中。這種通信可以是基於.Net到.Net間的通信,如下圖所示:   可以跨進程、跨機器甚至於跨平台的通信,只要支持標准的Web Service,例如J2EE應用服務器(如WebSphere,WebLogic)。應用程序可以運行在Windows操作系統下,也可以運行在其他的操作系統,如Sun Solaris,HP Unix,Linux等等。如下圖所示:  

3、安全與可信賴   WS-Security,WS-Trust和WS-SecureConversation均被添加到SOAP消息中,以用於用戶認證,數據完整性驗證,數據隱私等多種安全因素。   在SOAP 的header中增加了WS-ReliableMessaging允許可信賴的端對端通信。而建立在WS-Coordination和WS- AtomicTransaction之上的基於SOAP格式交換的信息,則支持兩階段的事務提交(two-phase commit transactions)。

上述的多種WS-Policy在WCF中都給與了支持。對於Messaging而言,SOAP是Web Service的基本協議,它包含了消息頭(header)和消息體(body)。在消息頭中,定義了WS-Addressing用於定位SOAP消息的地址信息,同時還包含了MTOM(消息傳輸優化機制,Message Transmission Optimization Mechanism)。

4、兼容性   WCF充分的考慮到了與舊有系統的兼容性。安裝WCF並不會影響原有的技術如ASMX和.Net Remoting。即使對於WCF和ASMX而言,雖然兩者都使用了SOAP,但基於WCF開發的應用程序,仍然可以直接與ASMX進行交互。 

三、更本區別

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 支持多種並發模式:單例、單調、會話 。

WCF與WPF

 

1. 

WCF(Windows Communication Foundation )是一個統一的,可用於建立安全,可靠的面向服務的應用高效的開發平台。WCF是構建安全可靠的事務性服務的統一框架。它是一種構建分布式面向服務系統的非常豐富的技術基礎,它統一了消息風格和RPC[Remote Procedure Call]風格,並且通過二進制和基於開放標准的通信達到了平台最優化。


它整合了.Net平台下所有的和分布式系統有關的技術,例如ASP.NET Web服務(ASMX)、增強Web服務擴展(WSE)、.Net Remoting、企業服務(Enterprise Service)和微軟消息隊列(MSMQ)。 



WPF與Silverlight有何不同? 

WPF(Windows Presentation Foundation),主要是提供統一的展現層模組,來建立諸如Windows Vista智慧型使用者體驗,包含了使用者介面、3D模組、多媒體、文件等;而Silverlight是跨瀏覽器上的外掛,傳達下一代網頁多媒體互相性功能,隸屬於WPF功能上的子集,並可與Ajax來做高彈性的程式化互動。二者都是互補,也是基於XAML的展示層基礎,若與Adobe技術比, Silverlight猶如Flash,WPF猶如AIR(前身為Apollo),XAML猶如MXML

 2.

 WCF為 Windows Communication Foundation,是Microsoft為構建面向服務的應用提供的分布式通信編程框架,是.NET Framework 3.5的重要組成部分。從功能的角度來看,WCF完全可以看作是ASMX,.Net Remoting,Enterprise Service,WSE,MSMQ等技術的並集。 
WPF是Windows Presentation Foundation,微軟新發布的Vista操作系統的三大核心開發庫之一,其主要負責的是圖形顯示,所以叫Presentation(呈現)。 WPF相對於WinForm,將美工(控件樣式設置)與實現(代碼的業務實現)分開,是一種新的架構方式。 
VS2008新特性是.Net Framework 3.5。

 

3.WPF就是所謂下一代Windows界面層技術,我覺得還有滿有前途的。不過Vista發布以來,用戶認可度目前確實不高。 
WCF,你就先把它想成Web Service的下一代也沒什么問題。

WPF用過,就算是winform的下一代吧,繪圖的話可以實現GDI+一些達不到的效果,國內的書籍資料很少,也就三四本。  

 

wpf 圖形有關,取代winform 
wcf 通訊有關,取代webservices 
wwf 工作流


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM