BT

ASP.NET Web APIと依存性注入

| 作者: Roopesh Shenoy フォローする 0 人のフォロワー , 翻訳者 徳武 聡 フォローする 0 人のフォロワー 投稿日 2012年10月9日. 推定読書時間: 1 分 |

原文(投稿日: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

このスレッドのメッセージについて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