BT

InfoQ ホームページ ニュース ASP.NET Web APIと依存性注入

ASP.NET Web APIと依存性注入

ブックマーク

原文(投稿日:2012/10/04)へのリンク

 

ASP.NET Web APIはコントローラに依存性を注入するためのDependency Resolverインターフェイスを導入する。しかし、Mark Seemann氏は目的を実現するためにはIHttpControllerActivatorインターフェイスの方が適していることを、サンプルを使って指摘している。

IDependencyResolverの問題は何か。氏曰く、

(IDependencyResolver)の実装に問題があります。与えられるのはTypeインスタンスだけで、オブジェクトを返さなければなりませんが、コンテキストがわかりません。依存性のグラフがどの程度深いのかわかない状態で同じサービスのインスタンスを複数回提供するように求められると、同じHTTPリクエスト内で求められたのか、複数のHTTPリクエストが並列で求めてきたのか判断できません。

Mark氏はサービスコンテナ内をIHttpControllerActivatorインターフェイスに置き換えた方が良いと言う。IHttpControllerActivatorはコンテキストを提供するHttpRequestMessageオブジェクトを提供する。氏はカスタムのシンプルなDIコンテナを使った例Castle Windsorを使った例を示している。

どちらの方法もコントローラはHTTPリクエストのたびに作成され、リクエストがハンドルされた後に破棄される。主な違いはTypeを解決する時にコンテナが参照できる情報だ。

また、この議論自体もASP.NETの拡張性の高さの一例と言えるだろう。

 

この記事に星をつける

おすすめ度
スタイル

こんにちは

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

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

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

コミュニティコメント

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

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

BT

あなたのプロファイルは最新ですか?プロフィールを確認してアップデートしてください。

Eメールを変更すると確認のメールが配信されます。

会社名:
役職:
組織規模:
国:
都道府県:
新しいメールアドレスに確認用のメールを送信します。このポップアップ画面は自動的に閉じられます。