7

对于使用 NHibernate 并尝试引入一些 DDD 概念的 WebForms 解决方案,您推荐什么作为正确的项目结构?

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

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

我忘记了什么?有没有更标准的方式来命名这些?
关于这个主题的任何伟大的博客文章?

4

4 回答 4

3

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

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

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

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

当然,根据项目的不同,树会变得更加复杂。至于讨论,请查看Onion Architecture。您还可以查看领域驱动设计上的示例项目,看看您可以从中获得什么。

于 2009-04-13T22:24:55.863 回答
2

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

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

Ben Scheirman 最近还发布了关于此的文章:Exporting Visual Studio Solutions with Solution Factory

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

于 2009-04-13T22:24:05.197 回答
2

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

  • Sample - 包含命名空间 Sample.Model、Sample.Model.Mappings 和 Sample.Services。
  • Sample.Tests - 包含单元测试,其结构与 Sample 相同。
  • Sample.Web - 用户界面
于 2009-04-14T02:47:42.427 回答
1

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

于 2011-11-30T08:25:45.170 回答