Asp.net mvc 在多项目解决方案中,我应该将AutoFac放在哪里

Asp.net mvc 在多项目解决方案中,我应该将AutoFac放在哪里,asp.net-mvc,dependency-injection,inversion-of-control,autofac,Asp.net Mvc,Dependency Injection,Inversion Of Control,Autofac,我目前正在一个多项目.net解决方案中实现AutoFac,该解决方案包含应用程序的多层、UI上的MVC、业务逻辑的中间层和与我的数据库通信的后端存储库层 我将使用AutoFac进行依赖,并解决层之间的依赖关系。不过,我有一个关于it架构的问题 我曾计划在UI层(MVC web app)中设置AutoFac模块,但这将导致web app添加对我的解决方案中所有项目的引用,我对此并不感兴趣,因为我认为UI层应该不了解存储库项目 如果我将AutoFac设置分包给一个中间项目,并包含对所有项目的引用,这

我目前正在一个多项目.net解决方案中实现AutoFac,该解决方案包含应用程序的多层、UI上的MVC、业务逻辑的中间层和与我的数据库通信的后端存储库层

我将使用AutoFac进行依赖,并解决层之间的依赖关系。不过,我有一个关于it架构的问题

我曾计划在UI层(MVC web app)中设置AutoFac模块,但这将导致web app添加对我的解决方案中所有项目的引用,我对此并不感兴趣,因为我认为UI层应该不了解存储库项目

如果我将AutoFac设置分包给一个中间项目,并包含对所有项目的引用,这将抽象出逻辑。但是这里有一个问题,我不能启动初始启动,甚至如果我们有xml配置,我应该把它放在哪里


这里的其他人的观点是什么,我的AutoFac设置的最佳位置在哪里?

在我看来,在UI层上指定项目没有问题,因为您必须在容器上注册所有类型。这里的问题是每个层的依赖性,我的意思是,层之间的耦合类型。因为您正在处理层之间的抽象,所以引用没有问题

我们有一个项目,其中有3个项目需要使用所有内容(Asp.Net MVC、一些Windows服务和一个WPF项目),我将容器的初始化(我使用MS Unity)保存在另一个类库中,并引用其中的所有内容,因为我们需要所有类型来注册每个依赖项。我在项目(Asp.Net Mvc、Windows Services、WPF)中引用此项目,并调用它应该在的位置(
application\u start
event在Global.asax for Web中,
OnStart
event在Windows服务中,
program
文件在WPF中)

请在评论中插入您的问题。。您在另一个类库中保留了一些可用的内容(我们称之为
Project.Starter
),并且您在将要使用的项目(asp.net mvc、控制台应用程序、winforms、wpf、windows服务、wcf等)上引用了此项目(Starter)。您不需要在初学者中引用UI项目


调用一个可能的方法来初始化所有内容(如果您使用的是NHibernate,则为container、sessionFactory),并确保如我前面所说的那样在每种类型的项目的正确位置进行初始化(
application\u start
event在Global.asax for Web中,
OnStart
event在Windows服务中,
program
文件在WPF中,等等).

谢谢您提供此信息。如果mvc项目(控制器、过滤器、依赖项解析程序等)的设置在另一个类库中,我可以问您如何设置DI吗。我认为它不能引用mvc项目,或者会有一个循环引用。组合根目录本身就是一个层,但是对于web应用程序来说,将此层与UI层放在同一个程序集中是很正常的。然而,这并不意味着它会变成一层。在一个组件(部署工件)中有多个层(逻辑工件)是很正常的。在一个程序集中有多个层没有错。相关: