我有一个由几个项目组成的解决方案,例如:DataLayer(包含EntityFramework),UnitTests,WebForms(包含MVP),CommonClasses(包含公共服务类)。
您是否为所有这些项目实现了一个容器,它位于一个单独的类库应用程序中?
或者您是否只需要一个单独的Windsor设置来处理每个内部的依赖关系,但是如果各个项目之间存在内部依赖关系会怎样。
或者它是所有Windsor Setup的一个,它位于主项目(The Startup项目)中以处理所有依赖项?
感谢。
答案 0 :(得分:2)
您是否会为所有这些项目实施单个容器
由于类依赖于其他程序集中的类(例如,您的演示者将依赖于存储库或业务层中的服务),因此您需要构建对象图(彼此依赖的对象图)单个容器。所以是的,你需要一个容器用于所有项目。
在一个单独的类库应用程序中?
没有。您通常应将此代码放在应用程序的启动路径中,在您的情况下,这是Web窗体项目。
但是如果各个项目之间存在内在依赖关系会怎样。
您的项目之间始终存在依赖关系。如果您的Web应用程序没有调用任何业务逻辑或没有连接到数据库,那么它将不会非常有用。
有关此主题的更多信息,请查看this Stackoverflow question (and answers)。以下是Simple Injector论坛上的an answer,也讨论了这一点。它是关于Simple Injector和Onion架构的,但你会发现答案信息丰富且适用于你的情况。