使用 ASP.NET 5 ( MVC 6 ) 的 N 层架构
N-Tier Architecture using ASP.NET 5 ( MVC 6 )
我正在阅读 ASP.NET 核心功能,我决定将我当前的解决方案 ( MVC 5 ) 转移到 MVC 6,但我对集成 DI 有点困惑。
目前我有这个架构
CemaManager(代表层)引用了Helpers、Resource、ViewModel和BLL。
Bll 引用了 ViewModel、数据库和 DLL。
Dll 引用了数据库。
使用 DI 和存储库模式的典型 N 层架构。
当我调查 MVC6 时,有 startup.cs DI 初始化的地方。
这意味着如果我想分离 BLL 和 DAL,它们将全部引用 MVC6 并且所有逻辑都将通过该层?到时候它会很重,很难维护和扩展,还是我错了?
有什么方法可以将startup.cs或DI方法导出到另一层吗?
也许有人知道要阅读的文章或示例?
就我个人而言,我想对整体结构进行一些更改,但我猜完整的设计审查并不是您真正要求的。关于您的实际问题,不 - 您的其他层不需要引用 MVC。
对于大多数应用程序,需要在表示层配置和初始化 IoC。最终,您的表示层需要一个引用链(直接或间接引用)到您要注册的所有内容,但这一直都是正确的。
您已经引用了 Helpers、Resource、ViewModel 和 BLL,因此您可以轻松地为这些层中的接口注册实现。您还可以添加对 DLL 的引用以注册该层的实现。
你也可以走间接路线,在每一层中添加一个 class,它引用你的 IoC 容器并处理自己的注册。在 Autofac 中,这是使用 modules 完成的,但也有使用其他 IoC 容器完成相同事情的等效方法。
我正在阅读 ASP.NET 核心功能,我决定将我当前的解决方案 ( MVC 5 ) 转移到 MVC 6,但我对集成 DI 有点困惑。 目前我有这个架构
CemaManager(代表层)引用了Helpers、Resource、ViewModel和BLL。 Bll 引用了 ViewModel、数据库和 DLL。 Dll 引用了数据库。
使用 DI 和存储库模式的典型 N 层架构。
当我调查 MVC6 时,有 startup.cs DI 初始化的地方。 这意味着如果我想分离 BLL 和 DAL,它们将全部引用 MVC6 并且所有逻辑都将通过该层?到时候它会很重,很难维护和扩展,还是我错了?
有什么方法可以将startup.cs或DI方法导出到另一层吗? 也许有人知道要阅读的文章或示例?
就我个人而言,我想对整体结构进行一些更改,但我猜完整的设计审查并不是您真正要求的。关于您的实际问题,不 - 您的其他层不需要引用 MVC。
对于大多数应用程序,需要在表示层配置和初始化 IoC。最终,您的表示层需要一个引用链(直接或间接引用)到您要注册的所有内容,但这一直都是正确的。
您已经引用了 Helpers、Resource、ViewModel 和 BLL,因此您可以轻松地为这些层中的接口注册实现。您还可以添加对 DLL 的引用以注册该层的实现。
你也可以走间接路线,在每一层中添加一个 class,它引用你的 IoC 容器并处理自己的注册。在 Autofac 中,这是使用 modules 完成的,但也有使用其他 IoC 容器完成相同事情的等效方法。