我们有一个ASP.NET Web API,它为我们的单页应用程序提供了REST API。我们使用DTO / POCO通过此API传递数据。
现在的问题是,随着时间的推移,这些DTO越来越大,所以现在我们要重构DTO。
我正在寻找如何设计DTO的“最佳实践”:当前,我们有一些小的DTO,它们仅包含值类型字段,例如:
public class UserDto
{
public int Id { get; set; }
public string Name { get; set; }
}
其他DTO按组成使用此UserDto,例如:
public class TaskDto
{
public int Id { get; set; }
public UserDto AssignedTo { get; set; }
}
另外,还有一些扩展的DTO是通过从其他对象继承来定义的,例如:
public class TaskDetailDto : TaskDto
{
// some more fields
}
由于一些DTO已用于多个端点/方法(例如GET和PUT),因此随着时间的推移,它们已被某些字段逐步扩展。由于继承和组成,其他DTO也变得更大。
我的问题是现在继承和组成不是好习惯吗?但是当我们不重用它们时,感觉就像是多次编写相同的代码。将DTO用于多个端点/方法是一种不好的做法,还是应该存在仅在某些细微差别上不同的DTO?