我正在开始一个新项目;我希望遵循 DDD 方法。我们已经与业务部门进行了交谈,并在某些细节(互联网电视)方面获得了对该领域的一些了解。
该团队五人强大且分布广泛。我们采用了存储库模式进行数据访问。我们总体上遵循基于服务的方法;服务负责执行操作,我们将通过 REST API 公开一些操作,一些通过我们自己的客户端应用程序公开。
没有使用 ORM 经验的人(目前我也没有大量经验)希望对实体之间没有关系的实体进行建模,其理由是这迫使使用存储库的开发人员准确地知道他们的影响正在数据库上。我想指出的是,这最终会导致一组非常健谈的服务、更多需要维护和测试的代码,以及一个根本没有抓住重点的领域模型。我认为这不是一个好方法,我与之交谈过的任何人也没有。
他们对实现这种方法的渴望是存储库外观下的 Linq2SQL。这需要第二个模型,它与域模型之间的映射类/层,以及存储库中的大量重复,因为编写通用存储库似乎是不可能的(我们目前已经看到)。也无法映射利用继承的 L2S 实体(这意味着每个实体都必须具有 created-on、created-by 等属性)
第一个问题: 谁能给我一些关于如何改变主意的建议?我正在编写一个使用 NHibernate 的副项目,它当然很好地支持 DDD 方法,基于“给我看代码”是一个强有力的论点。
第二个问题: 我应该尝试在我的 NHibernate 使用我自己的时间副项目中演示什么样的事情?我是新手;他们对 NHibernate 的厌恶之一是学习曲线和对 XML 的要求;我的反驳是它是一个强大的工具,而且 Fluent NHibernate 消除了对 XML 的需求。他们还是不喜欢。