Aaron Sloman 與 Haider Sabri 在 MIX08 分享「使用 WCF 建立 REST API」,展示 RESTChess 國際象棋遊戲 REST 應用範例。
REST 核心優勢
- 低學習門檻
- ROA 遵循 Web 語義,適合 Web 服務 API
- 靈活回應格式
Haider 指出:「若客戶端未知,建立通用 API 時 REST 為最佳選擇。」
WCF Web 程式設計模型(.NET 3.5 新增)
- URI Templates & WebGet/WebInvoke:屬性,對應 HTTP 請求到類別方法。
- WebHttpBinding:允許 WCF 基於 WebHttp 傳輸內容,易於在 REST 與 SOAP 間切換。
- WebOperationContext:支援以 REST 方式處理請求/回應。
RESTChess 擴展套件:彌補 WCF 缺口
- 靈活 URI:IIS 託管需
.svc 副檔名。RESTChess 提供 URL 重寫器,在 IIS 7 實作為 HTTP 模組。
- 支援低階 REST 客戶端:僅支援 GET/POST 時,透過自訂 HTTP 標頭或
_method 查詢參數模擬 DELETE/PUT。實作自訂 WCF Channel 識別客戶端類型並轉發。
- 資料簽名驗證:採用 OAuth 開放協議,簽名以查詢參數傳遞。自訂 Channel 攔截驗證,失敗拋出異常。
- 多重表現形式:WCF 僅支援 XML/JSON,RESTChess 擴展支援更多格式。
- REST 異常處理:建立引擎將異常對應適當 HTTP 錯誤碼。
Haider 總結:「WCF 亮點在於可擴充、可建構於高層基礎之上。」