数据传输对象保存从多个业务对象发送到客户端的数据。
但是,这些数据及其结构是否应该/可以为客户端进行额外设置以满足其绑定需求?
或者我应该为此额外创建一个 ViewModel 吗?
它是一个小型应用程序,所以我对过多的过度架构犹豫不决,并且 dto 将与视图模型 90% 相同......
DTO 将不再从一个安静的服务器转移到一个 javascript 客户端。
数据传输对象保存从多个业务对象发送到客户端的数据。
但是,这些数据及其结构是否应该/可以为客户端进行额外设置以满足其绑定需求?
或者我应该为此额外创建一个 ViewModel 吗?
它是一个小型应用程序,所以我对过多的过度架构犹豫不决,并且 dto 将与视图模型 90% 相同......
DTO 将不再从一个安静的服务器转移到一个 javascript 客户端。
我喜欢将我检索到的表示视为我的 ViewModel 的有线表示。在许多情况下,不需要区分 ViewModel 和 DTO。
我认为要考虑的是 VM 和 DTO 之间存在哪些差异。不久前,我试图创建 C# 视图模型,它实现、派生或包含 DTO 契约以及所有以视图为中心的东西,例如选择列表选项和过滤器属性。我发现这很麻烦,脆弱和潮湿(与干燥相反;)。
从那以后,我转向了在 JavaScript 中定义我的视图模型并允许 DTO 对象仅包含满足服务层的合同期望所必需的属性的模式。我使用 ajax 拉取数据。数据通常以从服务接收到的格式传递到视图中。然后我更新我的数据绑定、可观察的剔除视图模型。到目前为止,这种模式对我来说真的很有成效。
关于输入验证,只要我们谈论验证属性,我认为您在 DTO 上定义验证属性就很好。毕竟,您的 API 控制器有一个 ModelState 是有原因的。不幸的是,没有一种非常好的方法可以将该验证转换为您的客户端绑定视图。因此,我一直倾向于淘汰验证而不是 MVC 的验证。但是,我仍然希望有更好的解决方案验证解决方案!