BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース WCFでのRESTfulなAPI作成

WCFでのRESTfulなAPI作成

Aaron SlomanとHaider Sabriは、MIX08(サイト・英語)で「WCFでのRESTfulなAPI作成」(source)と題して、RESTChess(サイト・英語)というRESTのサンプルアプリケーションを紹介した。

講演は、Aaron SlomanのWCFでのRESTサポートに関する背景説明から始まった。その後、Haider Sabriが、RESTとその主要な機能について簡単な紹介を行った。Haiderによると、RESTの重要な利点は、以下の通りである。

    • 参入障壁の低さ
    • ROAは、Web Semanticsを引き継ぐもので、ウェブサービス用APIには手頃
    • レスポンス・フォーマットが柔軟

Haiderは、未知のクライアント用に汎用的なAPIを作成するには、RESTが最適と考えているようだ。

WCFはWebプログラミングモデル(source)を通してRESTをサポートする。サポートは、.NETフレームワーク3.5で追加されたが、以下の概念から成っている。

  • URIテンプレートと WebGet/WebInvoke
    • HTTPリクエストをクラス内のメソッドにマップするattribute。
  • WebHttpBinding
    • WebHttpBindingは、上記に基づいて、ディスパッチを可能にするWCFバインディングである。
    • 開発者は、RESTとSOAP APIを簡単に切り替えることができる。
  • WebOperationContext
    • WebOperationContextを使うと、RESTfulなやりかたでリクエストとレスポンスを操作することができる。

RESTChess(zip)は、Haider Sabriによって紹介されたチェス・ゲームのためのRESTfulなAPIである。RESTChessは、WCFのWebプログラミングモデルに従って実装されたRESTfulなAPIの素晴らしいサンプルであるとともに、WCFウェブ・プログラミングモデルの欠点を補う一揃いの拡張(カスタムメイドのWCFバインディングとビヘイビア)である。

  • 柔軟なURI
    • IISでサービスをホスティングする際には、.svc拡張子をもったサービスが必要である。
    • RESTChessは、IIS 7内のHTTPモジュールとして実装されているURL書き換え機能を提供する。
  • GETとPOSTしかサポートしない低機能RESTクライアントにブリッジする。
    • この問題を解決するためには、2つの一般的なアプローチがある。
      • カスタムメイドのHTTPヘッダ
      • _methodのクエリパラメータ
    • RESTChessは、低機能もしくは高機能のRESTクライアントを区別し、メッセージを変更する、カスタムメイドのWCFチャンネルを実装する。メッセージの変更には、適当なHTTPメソッドにPOSTリクエストを使ってDELETEまたはPUTメソッドをトンネリングする。
  • デジタル署名を使ったリクエスト認証
    • RESTChessはOAuth(サイト・英語)を利用します。OAuthはデジタル署名を包含し、安全なAPI認証を可能とするオープンなプロトコルである。
    • 署名は、クエリ・パラメーターとしてOAuth 消費者キー(consumer key)を通して渡される。
    • カスタムメイドのWCFチャンネルはOAuthキー要求をチェックし、消費者が認証されない(キーは存在しないもしくは、未知)場合には、要求がサービス・モデルに送られる前に、例外を起こす。
  • Formats 複数の表現フォーマット
    • WCFは、XMLとJSON以外はサポートしない。
  • RESTfulな例外処理
    • RESTChessチームは、例外を適当なHTTPエラー・コードにマップするためのエンジンを構築した。

RESTChessチームは、欠けている部分をいろいろとWCFウェブ・プログラミングモデルに追加しなければならなかったが、Haiderによれば、高いレベルでWCFの機能を拡張したり追加をしたり、さらにそのスタックの上に構築できることこそWCFの素晴らしいところだとのことである。

原文はこちらです:http://www.infoq.com/news/2008/03/wcf-restful-api

この記事に星をつける

おすすめ度
スタイル

BT