代码之家  ›  专栏  ›  技术社区  ›  weilin8

在.NET中应用域驱动设计的最佳实践?

  •  3
  • weilin8  · 技术社区  · 16 年前

    我一直在努力学习并将领域驱动的概念应用到我的软件开发中。我尝试做的第一件事是根据业务逻辑需求创建域模型。我还经常使用或映射工具(如llblgen、nhibernate或linq to sql)来创建数据模型和数据访问层。然而,领域模型和数据模型通常非常相似,这让我想知道维护两个模型真正能获得什么好处。

    有人能分享他们关于领域驱动设计的实际想法吗?此外,在应用程序中应用DDD时,如何处理数据模型或数据访问层?

    事先谢谢。

    编辑

    找到一个好 article 关于存储库模式。

    3 回复  |  直到 9 年前
        1
  •  4
  •   Duncan    16 年前

    我通过存储库模式抽象了我的数据访问,因此保持我的域对象完全不受POCO和数据提供者的影响。

    这允许我从一个领域的角度来塑造我的应用程序,主要通过单元测试来集中精力于逻辑。

    一旦解决了这一问题,我将放入表示层(通常是网页),然后提交到具体的数据库模式中。然后,我实现了具体的知识库类,可以是L2S。

    我在这里起草了几篇文章- http://www.duncangunn.me.uk/dasblog/2009/04/11/TheRepositoryPattern.aspx http://www.duncangunn.me.uk/dasblog/2009/06/27/MockingLinqToSQLRepositories.aspx

    在接下来的几周里,请注意,因为我将记录并提供我的实现的示例代码,它也使用工作单元模式。

        2
  •  2
  •   Mike Chaliy    16 年前

    我们将域对象直接映射到数据库,这意味着我们没有单独的数据访问层,而是将其视为基础结构代码。

    我们使用 Fluent NHibernate 对于大多数配置。

        3
  •  2
  •   thinkbeforecoding    16 年前

    拆分有界上下文也是DDD的一大好处,即使必须在上下文之间复制数据,也可以解决其上下文中的每个问题。

    良好的聚合根定义提供了一个更简单的设计,并导致潜在的性能改进(通过网格计算的可扩展性,请参见 Gojko Adzic post )

    当您的设计成为真正的域驱动时,您的应用程序对新的业务需求更为灵活,因为实现实际上是一个实现细节。

    推荐文章