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


Web api 

主要功能:

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

 請求的回復格式支持 JSONXML,並且可以擴展添加其他格式。

.請求的回復通過Http Status Code表達不同含義,並且客戶端可以通過Accept header來與服務器協商格式,例如你希望服務器返回JSON格式還是XML格式

應用場景:

如果服務需要在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


免責聲明!

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



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