从表单输入中实例化域对象

时间:2016-04-18 15:20:16

标签: webforms domain-driven-design

在DDD中,您的域对象的属性大多是从外部只读。现在,在MVC中,您通常会从视图或存储库中获取提供给您的对象,但是如何在Webforms中进行此操作,您可以手动读取表单输入并将其应用于域对象?您是否创建了DTO并为域对象提供了一个采用DTO的Create方法?

3 个答案:

答案 0 :(得分:1)

  

您是否创建了DTO并为域对象提供了一个采用DTO的Create方法?

不,你通常会在中间有一个片段,一个消息处理程序,它负责获取DTO并将其转换为域识别的值。域对象具有用于更新模型状态的命令方法。

类似

  1. 收到DTO
  2. 查找该DTO的适当处理程序
  3. 解析DTO,创建域识别的值类型
  4. 从存储库加载目标聚合
  5. 在目标上调用命令,将域值类型作为参数传递。
  6. "输入验证"通常发生在第3步。"业务验证"通常发生在第5步。

答案 1 :(得分:0)

在域模型中记录动作或活动的常见模式是将动作建模为与事物,人物和与之交互的地点相关联的对象。

因此,举例来说,如果有一个订单与产品相关联,那么通常会通过适用产品上的订单方法创建订单。表示通过UI捕获的订单的数据将传递给该订单方法。

Product-Orders

这代表了用于说明目的的简单案例。

答案 2 :(得分:0)

一种好方法是让您的域实体始终有效,始终保持一致。如何使它们从创建中保持一致只是通过实体的构造函数或工厂来检查提供的输入是否足以构建有效的实体。

  

您是否创建了DTO并为域对象提供了一个Create方法   拿DTO?

域图层与其他图层没有依赖关系,因此您无法在那里引用外部DTO。实体构造函数和工厂通常将原始值或值对象(有时是其他实体)作为输入,而不是DTO。