BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

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の拡張性の高さの一例と言えるだろう。

 

この記事に星をつける

おすすめ度
スタイル

BT