【发布时间】:2015-06-21 14:57:45
【问题描述】:
假设我有下面列出的类,这些类用于通过 Web 服务将数据传递给客户端(类已简化):
public class Customer
{
public int CustomerId { get; set; }
public string Name { get; set; }
public List<Sales> CustomerSales
{
get { /*code to return list of customersales */ }
}
public double TotalSalesAmount
{
get { /*code that return total sales amount for customer*/ }
}
public double AverageSalesPerMonth
{
get { /*code that return average sales amount per month for customer*/ }
}
}
public class Sales
{
public int SalesId { get; set; }
public int CustomerId { get; set; }
public DateTime SalesDate { get; set; }
public double SalesAmount { get; set; }
}
我的问题是关于这两个属性:
public double TotalSalesAmount
{
get { /*code that return total sales amount for customer*/ }
}
public double AverageSalesPerMonth
{
get { /*code that return average sales amount per month for customer*/ }
}
有时客户只需要客户信息即CustomerId和Name,而有时它需要CustomerId、名称 和TotalSalesAmount 或其组合等等。这方面的最佳做法是什么。我发现了一些关于这个话题的讨论,并提出了以下建议:
- 为每个场景创建一个 DTO(这意味着我最终会得到 100 个 DTO,因为示例被简化了)
- 为每个计算创建单独的服务方法并根据需要执行方法(这意味着会进行大量服务调用)
- 将属性保留在上述类中(这将意味着大量开销 - 某些计算可能非常耗费资源 - 这不是必需的)
我确信这没有灵丹妙药,但想知道最好的方法是什么?
【问题讨论】:
标签: c# web-services serialization poco dto