如何将DDD应用于智能客户端?

时间:2010-08-12 15:42:28

标签: c# wpf architecture domain-driven-design

Alt .NET社区中几乎所有DDD示例都应用于Web开发;我想看到的是在客户端处理大部分业务逻辑的情况下应用DDD的一些示例,而服务器只是使用DTO [ 1 ]的CRUD的Web服务。

我目前正在开发一种具有贫血领域模型的产品。来自多年的网络开发,这种事情通常会让我感到畏缩;但是,我不确定如何围绕DDD原则构建这个代码。在Web应用程序中,我可以直接访问数据库,处理业务逻辑(在我的域模型中实现,由控制器调用),这意味着我可以轻松拥有丰富的域模型并使用ORM进行CRUD 。但是,在我目前的项目中,DTO是传递数据的唯一理智方式。 80%的业务逻辑在View Models中实现(这是一个WPF应用程序),另外20%的业务逻辑位于存储过程中 - 并且100%的DAL是手写的ADO .NET。在Web服务中实际上没有很多业务逻辑实现,因此解决方案中没有任何“实体” - 它们都是DTO。

我怎样才能将DDD引入这种客户端/服务器架构?你有什么样的经历,你采取了什么方法?你会建议什么样的模式?我没有太多时间去研究CQRS,但有些东西告诉我它可能有关 - 是这样吗?


脚注

  1. 也许这是一个错误的问题。在这种类型的客户端/服务器WPF场景中,遵循Web应用程序范例是否有意义,其中99%的客户关注于显示逻辑?

1 个答案:

答案 0 :(得分:0)

这很有趣,因为我经常想知道如何将DDD应用于Web开发。

我并不是说这是对你的问题的全面回答,但你可能会在对我的一个老问题的回答中找到一些有用的东西:Should I map a DTO to/from a domain entity on both client and server sides?

作为对你的问题的一般回答,我会说你可以将逻辑移出视图模型并进入客户端域模型(因为它听起来像服务器端工作正常而没有任何概念域模型)。您将使用来自Web服务的DTO来“保湿”这些实体。

如果您正在创建智能客户端,那么您希望利用直接在客户端维护状态和执行逻辑的能力(因此,脚注中的“否”)。