Web api
主要功能:
支持基於Http verb (GET, POST, PUT, DELETE)的CRUD (create, retrieve, update, delete)操作
請求的回復格式支持 JSON,XML,並且可以擴展添加其他格式。
.請求的回復通過Http Status Code表達不同含義,並且客戶端可以通過Accept header來與服務器協商格式,例如你希望服務器返回JSON格式還是XML格式
應用場景:
如果服務需要在http協議上,並且希望利用http協議的各種功能,
如果服務需要被各種客戶端(特別是移動客戶端)調用,選擇Web API
WCF
主要功能:
分布式通信框架的集大成者
應用場景:
1.SOAP Services:這是因為WCF服務是基於消息的通訊機制,而它的消息是被封裝為一個SOAP Envelope(SOAP 信封的)
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和一個基於HTTP的ASP.NET Web Api。
在我們的開發實踐中如何進行選擇呢? 可以參照知名互聯網企業,無論是google,facebook,baidu,新浪還是騰訊。他們對外開放的接口都是基於Http的Web API,在服務內部框架都是基於SOA架構設計的,通訊機制都是采用RPC機制的,例如Google Protocol Buffers ,Facebook thift。 我們完全也可以這樣搭配,在內部通訊采用WCF + Protobuf-NET,參看《WCF服務上應用protobuf》,對外的服務采用ASP.NET WEB API。WCF的 TCP、Named Pipes,甚至UDP(在WCF 4.5中)綁定的性能要比HTTP強很多倍,這里有一個幾年前的微軟的測試報告《WCF 性能基准報告》,對外提供的服務采用Web API同時也是一個業界標准問題,用WebAPI就很容易的跨越ios,android,wp等移動終端平台,同時有很成熟的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
