C# 我应该按项目分开吗
我是领域驱动设计架构的新手。我的项目解决方案如下:C# 我应该按项目分开吗,c#,oop,design-patterns,domain-driven-design,ninject,C#,Oop,Design Patterns,Domain Driven Design,Ninject,我是领域驱动设计架构的新手。我的项目解决方案如下: 演示文稿(网络) 应用程序层 QueryLayer QueryHandlerLayer 数据层 我从文章中读到,这些分离是为了隔离工作 演示文稿项目参考应用程序层 但不引用QueryLayer、QueryHandlerLayer和DataLayer 但我正在使用IoC容器并将类型绑定到接口。 container.Bind(数据接口).To(数据类) Bind(查询接口).To(查询类) 我可以在PresentationLayer上这样做
- 演示文稿(网络)
- 应用程序层
- QueryLayer
- QueryHandlerLayer
- 数据层
- container.Bind(数据接口).To(数据类)李>
- Bind(查询接口).To(查询类)李>
这是关于架构的问题吗?或者我可以为所有层分离IoC容器绑定吗?使用DI是关于组合应用程序的。一个应用程序可能有多个层,但它们仍然是同一应用程序的一部分,必须组合在一起 编写应用程序的适当位置在中,它应该尽可能靠近应用程序的入口点 基本上有3种常见的建议用于组合具有多个层的应用程序,它们都是完全可以接受的
请参阅,了解此引用背后的原因,以及为什么从组合根引用每个库以避免紧密耦合很重要。或者,如前所述,您可以使用后期绑定来编写应用程序,而无需直接引用程序集,前提是部署脚本通过DLL进行复制。使用DI就是编写应用程序。一个应用程序可能有多个层,但它们仍然是同一应用程序的一部分,必须组合在一起 编写应用程序的适当位置在中,它应该尽可能靠近应用程序的入口点 基本上有3种常见的建议用于组合具有多个层的应用程序,它们都是完全可以接受的
请参阅,了解此引用背后的原因,以及为什么从组合根引用每个库以避免紧密耦合很重要。或者,如前所述,您可以使用后期绑定来编写应用程序,而无需直接引用程序集,前提是您的部署脚本通过DLL进行复制。我认为我在最近的使用中学到的最大一点是,在基本层面上,DI是关于注入依赖性的。这是一个相当多余的描述,所以让我详细说明一下: DI从设计开始。每样东西都应该通过构造器或某种工厂提供它所需要的东西。在这里,接口是您最好的朋友。一旦你做到了这一点,大部分工作就完成了。假设一些项目是共享的,那么现在您已经将所有工作委派给使用它的人。然而,这可能是老消息了
下一步,如果您正在控制容器,考虑创建默认模块,在NyCube的情况下是默认的模块,<代码> NinjectModule < /代码>。为每个应用程序层创建其中一个。可以说,这将形成“指令”,用于程序最高级别的容器将所有部分放在一起
这一切都可以通过反射诡计来实现,反射诡计周围有大量信息然后,只要将所有这些绑定的“说明手册”加载到组合根目录(通常在应用程序中)就可以了。我认为我在最近的使用中学到的最重要的一点是,在基本层面上,DI是关于注入依赖性的。这是一个相当多余的描述,所以让我详细说明一下: DI从设计开始。每样东西都应该通过构造器或某种工厂提供它所需要的东西。在这里,接口是您最好的朋友。一旦你做到了这一点,大部分工作就完成了。假设一些项目是共享的,那么现在您已经将所有工作委派给使用它的人。然而,这可能是老消息了
下一步,如果您正在控制容器,考虑创建默认模块,在NyCube的情况下是默认的模块,<代码> NinjectModule < /代码>。为每个应用程序层创建其中一个。可以说,这将形成“指令”,用于程序最高级别的容器将所有部分放在一起
这一切都可以通过反射诡计来实现,反射诡计周围有大量信息 然后,只需将所有这些绑定的“说明手册”加载到组合根目录(通常在应用程序中),就可以了