Web api html
主要功能:android
支持基於Http verb (GET, POST, PUT, DELETE)的CRUD (create, retrieve, update, delete)操做ios
請求的回覆格式支持 JSON,XML,而且能夠擴展添加其餘格式。web
.請求的回覆經過Http Status Code表達不一樣含義,而且客戶端能夠經過Accept header來與服務器協商格式,例如你但願服務器返回JSON格式仍是XML格式api
應用場景:安全
若是服務須要在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