使用CastleWindsor的项目结构

时间:2013-08-29 11:01:49

标签: dependency-injection castle-windsor

我有一个由几个项目组成的解决方案,例如:DataLayer(包含EntityFramework),UnitTests,WebForms(包含MVP),CommonClasses(包含公共服务类)。

您是否为所有这些项目实现了一个容器,它位于一个单独的类库应用程序中?

或者您是否只需要一个单独的Windsor设置来处理每个内部的依赖关系,但是如果各个项目之间存在内部依赖关系会怎样。

或者它是所有Windsor Setup的一个,它位于主项目(The Startup项目)中以处理所有依赖项?

感谢。

1 个答案:

答案 0 :(得分:2)

  

您是否会为所有这些项目实施单个容器

由于类依赖于其他程序集中的类(例如,您的演示者将依赖于存储库或业务层中的服务),因此您需要构建对象图(彼此依赖的对象图)单个容器。所以是的,你需要一个容器用于所有项目。

  

在一个单独的类库应用程序中?

没有。您通常应将此代码放在应用程序的启动路径中,在您的情况下,这是Web窗体项目。

  

但是如果各个项目之间存在内在依赖关系会怎样。

您的项目之间始终存在依赖关系。如果您的Web应用程序没有调用任何业务逻辑或没有连接到数据库,那么它将不会非常有用。

有关此主题的更多信息,请查看this Stackoverflow question (and answers)。以下是Simple Injector论坛上的an answer,也讨论了这一点。它是关于Simple Injector和Onion架构的,但你会发现答案信息丰富且适用于你的情况。