7

为我的 MVC 2 应用程序创建引导程序的最佳方法是什么?我正在使用 Unity 和 AutoMapper,并希望尽可能地抽象它们的加载和配置。

一个不错的例子在这里(http://weblogs.asp.net/rashid/archive/2009/02/17/use-bootstrapper-in-your-asp-net-mvc-application-and-reduce-code-smell。 aspx ),但 UnityContainer 实现了 IDisposable 并且在该示例中它永远不会被清理。这(在 Bootstrapper 中配置 Automapper 违反了开闭原则?)也是一个不错的例子,但他也没有处理 Unity/Disposable 问题。

这是(http://www.domincpettifer.co.uk/Blog/42/put-an-ioc-powered-bootstrapper-in-your-asp-net-mvc-application)另一​​个很好的如何做一个引导程序的例子,但同样没有解决 Unity/Disposable 问题。

我曾考虑将我的 Bootstrapper 对象保存在一个静态变量中并使其实现 IDisposable,但这听起来不对。

4

1 回答 1

4

如果您在 Bootstrapper 类中保留对容器的引用,则可以在应用程序端处理它。

public static class Bootstrapper
{
    private static IUnityContainer _container;

    public static void Run()
    {
        _container = new UnityContainer();

        // Configure container here...
    }

    public static void Dispose()
    {
        _container.Dispose();
    }
}

public class YourHttpApplication : HttpApplication
{
    protected void Application_Start()
    {
        Bootstrapper.Run();
    }

    protected void Application_End()
    {
        Bootstrapper.Dispose();
    }
}

或者你可以从你的引导程序返回容器,保留对它的引用并在应用程序端处理它。

public class YourHttpApplication : HttpApplication
{
    private IUnityContainer _container;

    protected void Application_Start()
    {
        _container = Bootstrapper.Run();
    }

    protected void Application_End()
    {
        _container.Dispose();
    }
}

我猜这取决于你的喜好。除此之外,问题中列出的任何引导示例都应该是引导您的应用程序的好选择。

于 2011-05-28T20:35:15.913 回答