ASP.NET Web API (パート1)

CodeZine / 2012年3月23日 14時0分

 本稿は、Scott Guthrie氏のブログを、氏の許可を得て、翻訳、転載したものです。米Microsoft社の副社長で、ASP.NETやSilverlightの開発チームを統率する氏のブログでは、次期製品を含む最新の技術をいち早く紹介しています。

 原典:ASP.NET Web API (Part 1)

■ASP.NET Web API(パート1)

 先日、ASP.NET MVC 4 Betaについてブログ投稿しました。ASP.NET MVC 4は、数多くの素晴らしい新機能をもたらす大きな更新になっています。中でも一番興奮している改善の1つが、『Web API』作成のサポートです。この新機能については、今後いくつかブログ投稿を行いますが、今回はその1回目になります。

●Web API

 過去数年間、正式なサービスコントラクト(SOAPやWS*など)ではなく、プレーンなHTTPに公開されたサービスであるWeb APIが出現してきています。この方法でサービスを公開すると、広く様々なデバイスやクライアントプラットフォームで機能を統合したり、ブラウザ内からJavaScriptを使用してよりリッチなHTML体験を作成することが、簡単にできるようになります。大きなWebサイトではWeb APIが公開されており(例えば、Facebook、Twitter、LinkedIn、Netflixなど)、ここ数年の内に、接続デバイスの広がりや、さらにリッチなユーザー体験の要求が加速していくでしょう。

 ASP.NET Web APIでは、広い範囲のクライアント(JavaScriptを使用したブラウザから、モバイル/クライアントプラットフォーム上の通常アプリまで)からアクセスできる強力なWeb APIを簡単に作成できます。

 サポートには以下のものがあります。

現代のHTTPプログラミングモデル:クリーンで、強く型付けされたHTTPオブジェクトモデルを使用して、Web APIのHTTPリクエストおよびレスポンスに直接アクセス/操作します。このHTTPプログラミングモデルをサーバー上でサポートするのに加え、どんな.NETアプリからもWeb APIを呼び出すために新しいHttpClient APIを利用できます。これにより、クライアント上でも同じプログラミングモデルをサポートします。
  コンテンツネゴシエーション:Web APIにはコンテンツネゴシエーションのサポートがビルトインされています。これは、APIから返されるデータの正しいフォーマットを決定し、クライアントとサーバー間で情報をやり取りできるようにするものです。JSON、XML、フォームのURLエンコードについてはデフォルトでサポートしていますが、独自のフォーマットを追加したり、さらにはデフォルトのコンテンツネゴシエーション戦略を独自のものと置換することも可能です。
  クエリの作成:Web APIでは、OData URL規約を通じたクエリを簡単にサポートできます。Web APIからIQueryable<T>の型を返す時、フレームワークは自動的にODataクエリのサポートを提供するので、ページングやソートの実装も簡単です。
  モデルのバインディングとバリデーション:モデルのバインディングにより、HTTPリクエストからさまざまなデータを抽出したり、それらの情報をWeb APIアクションが使用できる.NETオブジェクトに簡単に変換したりすることができます。Web APIは、ASP.NET MVCがサポートする同じモデルバインディングおよびバリデーションの基盤をサポートしています。
  ルーティング:Web APIは、ルートパラメータや制約を含むASP.NET MVCおよびASP.NET内でサポートされているルーティング機能をすべてサポートしています。またWeb APIは、デフォルトでスマートコンベンションを提供しているため、クラスやメソッドに属性を適用することなく、Web APIが実装されたクラスを簡単に作成できます。Web APIの構成は、完全にコードを通じて行われるので、configファイルはクリーンなままです。
  フィルタ:Web APIでは、横断的なビヘイビアをカプセル化し、適用できるフィルタ(例えば、[authorization])を簡単に使用/作成できます。
  テスト実行の改善:静的なコンテキストオブジェクトにHTTPの詳細を設定するのではなく、Web APIアクションでは、テストを非常に簡単にする2つの新しいHTTPオブジェクトであるHttpRequestMessageやHttpResponseMessageのインスタンスとやり取りできるようになりました。例えば、モックフレームワークを使用せずに、Web APIの総合テストができます。
  IoCサポート:Web APIは、ASP.NET MVCにより実装されるサービスロケーターパターンをサポートしており、多くの異なるファシリティに対する依存性を解決できます。依存性をクリーンに解決するために、IoCコンテナまたはDependency Injectionフレームワークと簡単に統合できます。
  柔軟性のあるホスティング:Web APIは、(ASP.NET MVC および Webフォームベースのアプリケーションの両方を含む)どんなタイプのASP.NETアプリケーション内でもホストできます。ASP.NET/IISを使用したくない場合、独自のプロセス内でもオプションでホスト/公開できるようにWeb APIサポートをデザインしました。これにより、使用する方法や場所に対して最大限柔軟に対応できます。 ●詳細について

 ASP.NET Web APIの利用方法についてのチュートリアルは、www.asp.net/web-apiで確認してください。

 ASP.NET MVC 4 講演のビデオ(36分間これについてカバーしています)で、私の講演およびASP.NET Web APIのデモも確認できます。

 次のブログ投稿で、新しいWeb APIの作成方法、この動作の基礎、クライアントから起動させるプログラミング方法をウォークスルーします。

 Hope this helps,

 Scott

 P.S. ブログ以外に、Twitterを使って簡単な更新やリンク共有を行っています。私のハンドル名は、@scottguです。


■関連記事
ASP.NET Web API (パート1)
ASP.NET MVC 4 Beta
タブページを使った ASP.NET アプリケーションの作成
3層データバインドを正しく活用しよう(前編)
ASP.NET MVC 3におけるDI実装のポイント

■記事全文へ

CodeZine

トピックスRSS

ランキング