1

我刚刚开始深入研究域驱动设计的第一个实验,并且正在利用 NWorkspace 模式。这种模式似乎很有意义,但是我无法找到很多成功使用这种模式甚至公开记录的地方的例子。在深入了解我的实现之前,我想知道是否有人成功地使用了这种模式,或者是否有人可以指出我在任何开源项目中使用 NWorkspace 的任何参考资料,我可以从中学习。还有我应该知道的这种模式的更好或更知名的替代方案吗?

NWorkspace 的简要背景

对于那些可能不熟悉 NWorkspace 的人来说,它是Jimmy Nisson引入的一种模式,它抽象了查询和持久性职责。在他的《应用领域驱动设计和模式》一书中,Jimmy Nilsson 展示了如何使用 NWorkspace 来抽象 DDD 存储库的基础设施部分,并提供一种机制来执行与持久性有关的跨存储库原子性。

4

1 回答 1

1

似乎他在为读写存储库推荐单独的接口。
我对所描述的模式没有经验,但我建议不要进行跨存储库事务。相反,我会建议一些在 DDD 社区中流行的解决方案(Eric Evans、Udi Dahan、Greg Young),它们确实对我有帮助:

  1. 始终在聚合根上使用急切加载。然后你就不需要跨存储库的原子性,并且当你持久化对象时弄清楚发生了什么变化会容易得多。
  2. 使用单独的类进行写入(即域类)和读取(即您的视图模型)。创建直接从数据库中检索视图模型的视图模型存储库(而不是将域对象映射到视图模型类)。

看看实施上述两件事是否会简化您的设计。

于 2011-08-02T22:08:35.420 回答