BT

WCFでのRESTfulなAPI作成

| 作者: Hartmut Wilms フォローする 0 人のフォロワー , 翻訳者 James Neoman フォローする 0 人のフォロワー 投稿日 2008年3月21日. 推定読書時間: 3 分 |

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

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT