DDD,NHibernate和项目结构/命名

时间:2009-04-13 20:47:15

标签: .net nhibernate naming-conventions domain-driven-design projects-and-solutions

对于使用NHibernate并试图引入一些DDD概念的WebForms解决方案,您建议使用哪种正确的项目结构?

假设根命名空间和解决方案名称为Sample

  • Sample.Domain - 包含我的域对象和我的映射文件
  • Sample.Repositories - 包含我的存储库和nhibernate连接配置文件
  • Sample.Business - 包含我的业务逻辑
  • Sample.Web - 实际的WebForms项目 - 所有演示文稿

我忘记了什么?是否有更标准的方法来命名这些?
有关该主题的任何精彩博文?

4 个答案:

答案 0 :(得分:3)

缺少的部分内容似乎是整个解决方案和测试项目所需服务的中心位置。我通常有这样的事情:

  • Sample.Core - 需要在整个应用程序中使用的服务和代码
  • Sample.Data - 域类和存储库接口
  • Sample.Data.NHibernate - 映射文件,流畅配置等和存储库实现,基本上是任何数据映射层特定的
  • Sample.Services - 服务实现和接口
  • Sample.Web - 网络应用程序

我有一个匹配的测试项目树:

  • 测试\ Sample.Core.Tests
  • 测试\ Sample.Data.NHibernate.Tests
  • 等...

当然,根据项目的不同,树也会变得更加复杂。至于讨论,请查看Onion Architecture。您还可以查看Domain-Driven Design上的示例项目,看看您可以从中获取哪些项目。

答案 1 :(得分:2)

我发现每个人都有自己的命名偏好,我更喜欢:

  • Sample.Domain - 域对象,映射文件
  • Sample.Services - 业务逻辑和服务(以及存储库,虽然我可以看到将它们分开)
  • Sample.Web - Web Stuff。
  • Sample.Migrations - 数据迁移。

Ben Scheirman最近也发布了这个:Exporting Visual Studio Solutions with Solution Factory

他使用不同的结构,但也包括一种标准化模板的好方法。

答案 2 :(得分:2)

我保持简单,倾向于按名称空间而不是按项目进行隔离,尤其是在开始时。我通常从解决方案中的三个项目开始:

  • Sample - 包含名称空间Sample.Model,Sample.Model.Mappings和Sample.Services。
  • Sample.Tests - 包含单元测试的结构与Sample相同。
  • Sample.Web - UI

答案 3 :(得分:1)

您可以在s#arp architecture中看到它是如何完成的。它是一个非常可靠的架构框架