Module 你如何组织你的NInject模块?
NInject的模块架构似乎很有用,但我担心它会陷入一片混乱Module 你如何组织你的NInject模块?,module,ninject,Module,Ninject,NInject的模块架构似乎很有用,但我担心它会陷入一片混乱 你如何组织你的模块?您将它们放在哪个组件中,以及如何决定在哪个模块中进行哪些布线?每个子系统都有一个模块。当然,“子系统”的定义取决于 在某些情况下,由于较低级别的子系统/组件无法做出最终的权威决策,一些绑定的责任会被推到更高的级别上——在某些情况下,这可以通过将参数传递到模块中来实现。在使用NInject几年后回复我自己的帖子 以下是我如何组织我的模块,以书店为例: 书店解决方案 Domain.csproj 服务.csproj
你如何组织你的模块?您将它们放在哪个组件中,以及如何决定在哪个模块中进行哪些布线?每个子系统都有一个模块。当然,“子系统”的定义取决于
在某些情况下,由于较低级别的子系统/组件无法做出最终的权威决策,一些绑定的责任会被推到更高的级别上——在某些情况下,这可以通过将参数传递到模块中来实现。在使用NInject几年后回复我自己的帖子 以下是我如何组织我的模块,以书店为例:
- 书店解决方案
- Domain.csproj
- 服务.csproj
- CustomerServicesInjectionModule.cs
- PaymentProcessingInjectionModule.cs
- DataAccess.csproj
- CustomerDatabaseInjectionModule.cs
- BookDatabaseInjectionModule.cs
- CustomSecurityFramework.csproj
- CustomSecurityFrameworkInjectionModule.cs
- PublicWebsite.csproj
- PublicWebsiteInjectionModule.cs
- Intranet.csproj
- IntranetInjectionModule.cs
同时,没有任何东西强迫单个应用程序使用特定的注入模块。应用程序可以创建自己的注入模块,并忽略正在导入的项目提供的默认模块。这样,系统仍然保持灵活和解耦。好问题。我希望看到更多关于这一点的讨论,因为我和你们一样担心。每个子系统有一个模块听起来很合理,但我也有一些模块,用于以不同方式连接单元测试的依赖项。因此…这意味着您必须在每个有模块的项目中包含一个Ninject包/引用???我更希望在调用程序集(例如web项目)中有一个地方注册我需要的每个服务,然后只有该程序集将直接引用Ninject。想法?是的,这是此设置的一个缺点。但是,除非你有一个非常纯粹的应用程序,它从不使用属性注入或使用Kernel.Get(),否则我通常会得到一个NInject引用。好吧……我刚刚完成了一个使用Unity for DI的项目,我在web项目的引导程序中得到了一个长RegisterServices方法。我的类libs项目中没有一个直接依赖于Unity或EntLib。他们都利用了注射。我觉得很好。是的,在绿地项目上工作很好,所以你可以把每件事都做好。不过有几个问题-如果需要创建使用域层、服务层等的Windows应用程序,您会怎么做?是否复制所有RegisterService方法?如果您有另一个仅应用于web项目的WebSecurity项目,并且不想将其导入Windows应用程序,该怎么办?您将如何组织此纯网络项目的服务注册?正是在这一点上,我们需要模块,我们需要把它们放在一个可以共享的地方。