【问题标题】:How to Configure Unity in n-tier ASP .net MVC application如何在 n 层 ASP .net MVC 应用程序中配置 Unity
【发布时间】:2010-12-14 00:01:46
【问题描述】:

我在弄清楚如何在我的 n 层 ASP .net MVC 应用程序中配置 Unity IoC 容器时遇到了一点问题。

我的解决方案中有 3 个项目: 1. MVC(用作视图):仅引用业务逻辑层 2.业务逻辑层:仅参考Repository项目 3. Respository:不参考上述任何项目

请注意我的参考工作方式,我是这样做的,所以我将能够使用 WCF 替换我的层之间的通信,并且难度较小。

我在我的 MVC 应用程序中配置了一个 Unity 容器,执行如下操作 (Global.asax):

container.RegisterType(); //MyService 在我的业务逻辑层中

MyService 类在其构造函数中使用我的存储库,这意味着当创建其中一个 MyService 类时,还需要一个 MyRepository:

public MyService(IRepository 存储库) : base(repository) { }

如您所见,我还没有在容器中配置 IRepository。

我不想在我的 Global.asax 中这样做,因为我不想将存储库的任何引用添加到 MVC(视图)层。

哪里是配置它的最佳位置?我在这里有点困惑....

提前致谢。

【问题讨论】:

    标签: asp.net-mvc ioc-container


    【解决方案1】:

    你试过了吗:http://mvcunity.codeplex.com/

    【讨论】:

    • Lee,MVCUnity 看起来不错,但我不太明白这将如何解决我的问题?我的 MVC 应用程序中没有对 Repository 的任何程序集引用。
    【解决方案2】:

    让我告诉你到目前为止我做了什么:

    我在我的服务和存储库中创建了一个静态类后来,我在我的视图层 (MVC) 中创建了 Unity 容器并将其传递给那些静态类,它们使用他们需要的内容以及下一层填充容器,例如服务层也调用我存储库中的静态类。

    这样我就可以为容器配置我需要的一切。

    问题是:这是一件好事吗?

    【讨论】:

      【解决方案3】:

      如果我们使用 Unity。我们可以在中间层实现 Unity 容器的扩展,并在 Presentation 层中注册,如下所示。

                //Data Layer dependency mapping as extension eg : IUnitOfWork
                  container.AddNewExtension<DependencyInjectionExtension>();
      

      更多详情请关注文章。

      N-tier with DI (Unity)

      谢谢

      【讨论】:

        猜你喜欢
        • 2015-08-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多