我得到的要求只是要求写入和更新某些属性但是读取了所有属性所以我想知道最好的处理方法是什么?我知道这可能听起来很疯狂,但要求是写入/更新将通过SOAP完成,但读取将通过REST完成。想法是SOAP API将用于初始数据加载,Web界面的最终用户将进行更详细的修改,然后另一组最终用户将针对REST API编程以在网页上显示数据。我很欣赏一些关于最佳/良好实践的反馈和/或评论。这是我认为需要做的事情(注意,缩写示例):
namespace DTOs.Create
{
public class Project
{
public string Name { get ; set; }
}
}
namespace DTOs.Read
{
public class Project
{
public string Name { get ; set; }
public string Description { get ; set; }
public DateTime DueDate { get ; set; }
public int Priority { get ; set; }
}
}
答案 0 :(得分:0)
仔细考虑实施的生命周期。如果其余的和soap接口可能会随着时间的推移发生分歧,那么请确保选择两个不同的DTO类。
具体在你的情况下,我会保留两个DTO来放松这两个接口。我在项目中听过很多次,比如“我们不能只改变界面的这一部分吗?它只是一个字符串!”然后它需要付出太多的努力才能实现,因为接口紧密耦合到应用程序的其他部分,这些部分也必须被重写(重新测试)等。
但这几乎取决于应用程序的范围
答案 1 :(得分:0)
我倾向于只有一个DTO,DTO的意图是携带数据,它不应该附加行为语义,服务操作提供这个。
您应该能够在许多不同的环境中(在不同的操作中)使用项目信息(DTO)。
什么是项目的定义应该在您的域中保持一致,如果定义项目的定义在SOAP和REST部分之间有不同,那么您有其他问题。
这两个接口可能随着时间的推移而发散,但不同之处在于数据的使用方式与数据的使用方式不同。
如果一个界面确实需要这样的不同信息,那么就创建一个新的域概念,因为它不再是原始的Project概念。