Model view controller IRepository、iSeries、ASP.NET MVC应用程序中的Unity、参考问题

Model view controller IRepository、iSeries、ASP.NET MVC应用程序中的Unity、参考问题,model-view-controller,repository,unity-container,facade,Model View Controller,Repository,Unity Container,Facade,我不熟悉团结,但这个问题对国际奥委会来说更为普遍,我对国际奥委会的整体实施也相当陌生。我有此项目结构的VS2010解决方案(稍微简化): 业务对象–文件夹 DomainModel(类库prj.)–实体框架2 POCO实体 数据层-文件夹 数据访问(类库prj.)–EF2 EDMX 存储库(类库prj.)–IRepository接口和存储库的具体实现 表示层–文件夹 WebUI–MVC项目 服务层 服务(类库prj.)–iSeries设备接口和服务(façade模式)的具体实现

我不熟悉团结,但这个问题对国际奥委会来说更为普遍,我对国际奥委会的整体实施也相当陌生。我有此项目结构的VS2010解决方案(稍微简化):

  • 业务对象–文件夹
    • DomainModel(类库prj.)–实体框架2 POCO实体
  • 数据层-文件夹
    • 数据访问(类库prj.)–EF2 EDMX
    • 存储库(类库prj.)–IRepository接口和存储库的具体实现
  • 表示层–文件夹
    • WebUI–MVC项目
  • 服务层
    • 服务(类库prj.)–iSeries设备接口和服务(façade模式)的具体实现
所有项目都引用DomainModel项目

存储库引用DataAccess项目

服务层引用存储库项目

WebUI引用服务项目&Unity程序集

我已将Unity配置为在WebUI中正确注入我的所有服务类型(global.asax通过自定义UnityController.cs)。但是如何在服务层配置Unity来注入存储库对象呢

我不想从WebUI引用存储库项目,以确保在开发过程中没有任何快捷方式和绕过服务层

我有几个想法(不确定是否能解决):

  • 将IRepository接口移动到DomainModel中,并为IRepository添加Unity.RegisterType调用
  • 在Web.config中设置Unity配置

  • 任何指导都将不胜感激,特别是如何为服务层/存储库配置Unity,以及项目的一般情况。

    在服务项目中添加某种引导程序。然后在WebUI中引用引导程序

    一种方法是编写一个小型的Unity扩展。大概是这样的:

    public class ServiceLayerBootstrap : UnityContainerExtension
    {
        protected override void Initialize()
        {
            Container.RegisterType<IRepository, WhateverRepositoryImplementation>();
            // etc.
        }
    }
    
    公共类服务LayerBotstrap:UnityContainerExtension
    {
    受保护的覆盖无效初始化()
    {
    Container.RegisterType();
    //等等。
    }
    }
    
    然后,在创建并初始化容器的web项目中,执行以下操作:

    var container = new UnityContainer()
        .AddNewExtension<ServiceLayerBootstrap>();
    
    var container=newunitycontainer()
    .AddNewExtension();
    
    谢谢,这正是我想要的。