Subsonic 亚音速+;N层和DDD

Subsonic 亚音速+;N层和DDD,subsonic,domain-driven-design,n-tier-architecture,Subsonic,Domain Driven Design,N Tier Architecture,经过数小时的研究,我仍然不知道哪种方法是使用类似ORM的亚音速构建n层ddd应用程序的最佳方法 项目结构应类似于以下内容: 1-表示层(WPF MVVM) 2-应用层 3-域层->域实体/业务实体所在的位置(POCO??) 4-基础架构层->存储库+模型+持久性+亚音速 我想要的是: 使用领域驱动的设计方法 使用存储库模式在域和ORM之间进行抽象 以亚音速为音速 我的问题是: 结合亚音速,实现这一目标的最佳方式是什么?使用亚音速(ActiveRecord、Repository、T4)的最佳方式是

经过数小时的研究,我仍然不知道哪种方法是使用类似ORM的亚音速构建n层ddd应用程序的最佳方法

项目结构应类似于以下内容:

1-表示层(WPF MVVM)

2-应用层

3-域层->域实体/业务实体所在的位置(POCO??)

4-基础架构层->存储库+模型+持久性+亚音速

我想要的是:

  • 使用领域驱动的设计方法
  • 使用存储库模式在域和ORM之间进行抽象
  • 以亚音速为音速
  • 我的问题是:

    结合亚音速,实现这一目标的最佳方式是什么?使用亚音速(ActiveRecord、Repository、T4)的最佳方式是什么

    以这种特定的方式构建应用程序结构(就DDD与亚音速的结合使用而言)有意义吗

    谢谢你的回答和想法


    krisan

    请注意,亚音速会迫使您进入每个表模型的一个类。这些类不适合直接用作DDD中的实体和聚合。当然,您可以在亚音速类和您自己的域模型类之间进行映射,但是使用亚音速并不能给您带来太多好处。

    您好,谢谢您的回答。这是我所期望的,但我不想听;-)那么,这是否意味着DDD实际上是不可能的?将亚音速与DDD结合使用真的没有任何意义?你知道有任何其他ORM与亚音速一样快,并且更适合DDD解决方案吗?似乎nHibernate更合适?!您可以这样做,但不希望直接使用亚音速类。您可能希望拥有自己的域模型类,并且亚音速类的公开程度不会高于存储库层。在这一点上,亚音速只是一个数据访问工具——如果这就是你使用它的全部目的,我推荐一种微型orm,比如Massive、Dapper或PetaPoco(真的很酷)。否则,换一种方式,使用NHibernate,它可以灵活地将数据库直接映射到合适的域模型类。微ORM比亚音速快(请注意,亚音速中存在一些重大性能问题,尤其是LINQ),但您仍然需要从ORM连接到域(不一定是坏事,但需要更多的努力)。否则,它基本上是NHibernate。LLBLGen可能会工作,对它还不够熟悉,无法确定。但我可以说Linq2Sql甚至实体框架都存在设计问题,这将使使用它们进行DDD不是一条平坦的道路(与NHibernate相比)。非常感谢您的回答!这对我帮助很大!亚音速只有少数人维护。我会厌倦在业务关键型应用程序上使用它。nHibernate、LinqToSql和EF各有优缺点,但可能比亚音速的长期投资更好。