我想知道你们中是否有人在客户端/服务器应用程序中成功实现了 DDD,并想分享一些经验。
我们目前正在开发 Flex 的智能客户端和 Java 的后端。在服务器上,我们有一个向客户端公开的服务层,它提供 CRUD 操作以及其他一些服务方法。我知道在 DDD 中,这些服务应该是存储库,并且服务应该用于处理不适合存储库的用例。现在,我们在接口后面的客户端上模拟这些服务,并通过 IoC 容器注入实现(Webservices、RMI 等)。
所以出现了一些问题:
- 服务器应该向客户端公开存储库还是我们需要某种外观(例如能够处理安全性)
- 客户端是否应该实现存储库(以及一般的 DDD?)知道在客户端中,大部分逻辑与视图相关,而真正的业务逻辑存在于服务器上。与服务器的所有通信都是异步发生的,我们在客户端上有一个单线程编程模型。
- 如何将客户端映射到服务器对象,反之亦然?我们尝试了 DTO,但又恢复为公开对象的状态并直接映射到它们。我知道这被认为是不好的做法,但它为我们节省了大量时间)
总的来说,我认为新一代应用程序将随着 Flex、Silverlight、JavaFX 的发展而出现,我很好奇 DDD 是如何融入其中的。