しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

Unity DI 3 で追加された ASP.NET MVC と Web API 向けライブラリ

更新内容を見ると ASP.NET MVC と Web API への対応を含んでるとありますが、これは何を指すのかちょっと不明ですね。

NuGet 2.5、Unity DI 3 が公開されていました - しばやん雑記

前回ではこんなふうに書いておきましたが Unity Developer's Guide を読むと、NuGet で以下のようなライブラリが公開してると書いてありました。

NuGet Gallery | Unity bootstrapper for ASP.NET MVC 3.5.1404
NuGet Gallery | Unity bootstrapper for ASP.NET Web API 3.5.1404

Bootstraper という名前の通り、良い感じに Unity を使うための細々したコードやクラスを含んでいます。インストールすると App_Start ディレクトリに UnityConfig.cs と UnityMvcActivator.cs や UnityWebApiActivator.cs が追加されるので、Global.asax.cs で何も書かなくても使えるようになります。

インストールしてオブジェクトブラウザーで確認してみました。

f:id:shiba-yan:20130428122533p:plain

基本的には MVC と Web API 向けの UnityDependencyResolver が実装されたライブラリと考えておけば良さそうです。そして MVC 向けには PerRequestLifetimeManager がキタ━━━ヽ(∀゚ )人(゚∀゚)人( ゚∀)ノ━━━!!

しかし、PerRequestLifetimeManager を使う時には UnityMvcActivator.cs のコメントアウトされている 1 行を有効にする必要があるようです。

// TODO: Uncomment if you want to use PerRequestLifetimeManager
// Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility.RegisterModule(typeof(UnityPerRequestHttpModule));

これで MVC や Web API アプリで Unity が使いやすくなりましたね。個人的には Unity.SignalR のリリースにも期待してます。