Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

ASP.NET Web API (パート1)

連載:ScottGu's Blog翻訳

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2012/03/23 14:00

 本稿は、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です。



  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • WINGSプロジェクト Chica(チカ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

バックナンバー

連載:Scott Guthrie氏 Blog翻訳

もっと読む

All contents copyright © 2005-2018 Shoeisha Co., Ltd. All rights reserved. ver.1.5