WCF與Web API 區別(應用場景)

Web api html

主要功能:android

支持基於Http verb (GET, POST, PUT, DELETE)CRUD (create, retrieve, update, delete)操做ios

 請求的回覆格式支持 JSONXML,而且能夠擴展添加其餘格式。web

.請求的回覆經過Http Status Code表達不一樣含義,而且客戶端能夠經過Accept header來與服務器協商格式,例如你但願服務器返回JSON格式仍是XML格式api

應用場景:安全

若是服務須要在http協議上,而且但願利用http協議的各類功能,服務器

若是服務須要被各類客戶端(特別是移動客戶端)調用,選擇Web API架構

 

WCF框架

主要功能:分佈式

分佈式通訊框架的集大成者

 應用場景:

1.SOAP Services:這是由於WCF服務是基於消息的通信機制,而它的消息是被封裝爲一個SOAP EnvelopeSOAP 信封的)

2.WebHttp Services:是在傳統的SOAP Services基礎上的一個加強,它仍然是基於操做(Operation)的,只不過這些Operation能夠直接經過Uri訪問到,而無需客戶去編寫一個特殊的客戶端。(ps: 實質是webservice,用的最多的)

同時,WebHttp Services提供了兩種不一樣的消息格式,第一種是XML,第二種是Json。這將更加有利於諸如Javascript這種客戶端來訪問服務。

要實現WebHttp,咱們首先要添加一個引用 

3.WCF Data Service:持兩種數據模型,一種是LINQ to SQL, 一種是ADO.NET Entity Frmawork

4. Workflow Services:這是一個頗有意思的服務。這是在.NET Framework 4.0中開始出現的,也就是隨着Workflow Foundation升級到4.0以後,提供了一種全新的服務類型,簡單地來講,它是能夠直接與Workflow Foundation(工做流)想結合的一種服務。 

5.RIA Services:RIA的意思是,Rich Internet Application。在微軟平臺上,Silverlight就是RIA戰略中的核心產品,因此很顯然,RIA Service主要就是爲Silverlight服務的。這個是.NET Framework 4.0中才有的功能,而且還須要安裝RIA Service Toolkit

總結:

如今咱們擁有了2個服務框架,一個基於RPC(遠程過程調用(Remote Procedure Call) )機制的WCF和一個基於HTTPASP.NET Web Api

在咱們的開發實踐中如何進行選擇呢? 能夠參照知名互聯網企業,不管是googlefacebook,baidu,新浪仍是騰訊。他們對外開放的接口都是基於HttpWeb API,在服務內部框架都是基於SOA架構設計的,通信機制都是採用RPC機制的,例如Google Protocol Buffers Facebook thift。 咱們徹底也能夠這樣搭配,在內部通信採用WCF + Protobuf-NET,參看《WCF服務上應用protobuf》,對外的服務採用ASP.NET WEB APIWCF的 TCPNamed Pipes,甚至UDP(在WCF 4.5中)綁定的性能要比HTTP強不少倍,這裏有一個幾年前的微軟的測試報告《WCF 性能基準報告》,對外提供的服務採用Web API同時也是一個業界標準問題,用WebAPI就很容易的跨越iosandroidwp等移動終端平臺,同時有很成熟的OAuth 解決安全問題。

參考:

http://www.cnblogs.com/developersupport/p/3305458.html

http://www.cnblogs.com/shanyou/archive/2012/09/26/2704814.html http://www.cnblogs.com/chenxizhang/archive/2011/06/21/2085979.html

相關文章
相關標籤/搜索