我们目前使用DTO进行Web API请求和响应
并使用ViewModel将数据传递给MVC中的View
目前,我们有:
> DTO作为一个单独的项目
> ViewModel位于UI项目内(与控制器一起的另一个文件夹)
我在我们的例子中看到的唯一区别是DTO必须通过线路传递并作为JSON发送,而ViewModel必须在视图内传递以呈现为HTML.
我们应该为MVC应用程序和我们的App /其他客户端保留单独的传输对象,还是仅通过DTO执行这两个作业,即在View中传递DTO而不是ViewModel?它有什么可能的缺点呢?
我阅读了许多回复here,但是在我们的案例中没有单独的ViewModel和DTO的例子和令人信服的理由.
解决方法:
将它们分开
鲍勃做过一次.他有一个网站,显示用户的个人资料,包括他们的姓名和电话号码.他还有一个API调用,允许客户端使用相同的信息检索相同的配置文件.所以他为网站的ViewModel和API的DTO使用了相同的类.
一切都很好.事实上,业务增长良好,鲍勃能够出售他的股票期权并退休.软件工程部门在很大程度上外包,人们并没有真正相互交谈.
一年后,产品所有者响应客户请求,添加了一个要求,即配置文件页面不仅显示用户的名字和姓氏,还显示用户名和电子邮件地址.开发人员通过向ViewModel添加Login成员并使用AutoMapper填充它来完成任务并实现它.他认为ViewModel是服务器端代码,并没有考虑太多.
该公司推出了现场制作,用户名功能取得了成功.只有一个问题.所有API客户端现在都在接收包含用户登录名,电子邮件地址以及其他所有内容的JSON,包括其哈希密码.
不要鲍勃.