程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 用WCF創建一個REST的API

用WCF創建一個REST的API

編輯:關於.NET

Aaron Sloman和Haider Sabri在MIX08中談到了如何“使用WCF創建一個REST的API”,其中,介紹了一 個名為RESTChess的REST應用程序示例。

Aaron Sloman首先談到在WCF中支持REST的某些背景信息。接著,Haider Sabri則對REST以及REST的主 要特性進行了簡要的介紹。據Haider所說,REST提供的關鍵優勢在於:

低的學習門檻

ROA遵循了Web語義……適於Web服務的APIs

靈活多變的響應格式

他認為“如果客戶端未知,那麼在創建一個通用API時,REST是最佳選擇”。

WCF通過Web編程模型來支持REST,該模型是在.NET Framework 3.5中增加的,包括如下概念:

URI Templates & WebGet/WebInvoke

它們都是特性,用於映射HTTP請求到類中的方法。

WebHttpBinding

WebHttpBinding是WCF的一個綁定,允許WCF基於WebHttp進行內容發送。

你可以很容易地在REST和SOAP的API之間進行切換。

WebOperationContext

WebOperationContext支持以REST方式處理請求與響應。

Haider Sabri介紹了RESTChess,它是用於國際象棋游戲的REST的API。RESTChess既是一個很好的例子 ,用來展現采用WCF的Web編程模型實現的REST的API,同時又是一個擴展集(定制WCF綁定和行為),彌補了 WCF Web編程模型的缺陷:

靈活的URIs

在IIS托管服務時,服務的.svc擴展名是必備的。

RESTChess提供了一個URL的重寫器,並在IIS 7中被實現為一個HTTP模塊。

為只支持GET和POST的低級REST客戶端搭建支撐的橋梁

有兩種常見的方法可以解決這一問題:

自定義HTTP標頭

_method查詢參數

RESTChess實現了一個自定義WCF通道,可以分辨高級的和低級的REST客戶端,以及修改利用隱藏的 DELETE或PUT方法通過POST請求傳遞到適合的HTTP方法的消息。

使用數據簽名驗證請求

RESTChess使用了OAuth,它是一個包含了數據簽名的“支持安全的API驗證的開放協議”。

OAuth調用者作為查詢參數對簽名進行傳遞。

一個自定義的WCF通道負責檢查請求是否具有OAuth密鑰,如果在請求被分發給服務模型之前,調用者 沒有被驗證(密鑰不存在或者不能識別),就會拋出一個異常。

多種表現形式

WCF只支持XML和JSON。

REST的異常處理

RESTChess團隊構建了一個引擎,能夠將異常映射到適當的HTTP錯誤代碼。

雖然該團隊為WCF的Web編程模型完成了拾遺補阙的任務,但Haider則認為:“WCF的閃光之處就在於能 夠對它進行擴展、添加,以及構建在高水平的基礎之上”。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved