有的企業 Web 服務使用 SOAP 和 WS-*.*它們對許多事務性或復雜的方案來說很不錯。然后還有更輕量級的RESTful web 服務或"Web API",它們使用 JSON,XML,展示了所有的好東西和HTTP 規范的穩定性。
WCF 過得好好的, ASP.NET 也如此,每種技術都有使用其的理由。正如這篇文章說得好, "SOAP的世界與HTTP 服務的世界是完全不同的。SOAP 允許我們將我們的服務所需的所有知識放在信息本身中",而"您可以使用 [Web API] 來創建只使用標准HTTP 概念 (URI 和動詞)的HTTP服務,和創建使用更高級的 HTTP功能的服務 — — 請求/響應標頭,超媒體概念等。
Kelly Sommers在澄清REST中撰寫了我認為是REST的最好詮釋,無論你想編寫 RESTful專注於資源的 HTTP 服務還是只是POX或 POJ (Plain Old XML 或Plain Old JSON) 服務,你能使用ASP.NET Web API做到這兩點。它是ASP.NET 開源的Web棧的所有部分。
ASP.NET Web API Samples on Codeplex,看到C# 協議對象如何在 JSON 世界和 C# 世界之間輕易來回移動了嗎? 正是JSON.NET 開放源碼庫實現了這一目標。
JSON 和 JavaScript真的是動態的,不過通常它是件麻煩事來嘗試將真的動態的 JSON 對象反序列化為強類型的.NET結構。JSON.NET 和 ASP.NET Web API 的模型綁定提供了一個開心的介質——一個中間背景——被稱為 JToken。
1: public class ContactController : ApiController
2: {
3: public JToken Post(JToken contact)
4: {
5: return contact;
6: }
7: }
當 JSON導入時, 請查看Watch窗口:
JToken 給予我一個動態的容器,而也是一個類似於 DOM 的導航模型。但如果對我來說不夠動態的話,為什么我的方法的參數不能只采取一種"動態"。
C# 是靜態類型,這是肯定的,但這並不意味着我不能靜態化動態的東西。;)
再次注意Watch窗口。
查看JSON 如何在系統中移動,而沒有任何不匹配的阻攔。C#並沒有降低JavaScript 和 JSON 的靈活性。
以上內容來自:微小的開心功能第2部分-Visual Studio 2012 中的ASP.NET Web API
http://www.west-wind.com/weblog/posts/2012/Nov/13/DevConnections-Session-Slides-Samples-and-Links