背景
我最近一直在杀死一些神经元。我想为UPS等包裹服务制作多层应用程序。简而言之,后端将是基于WCF的服务器,而消费者将是ASP.NET MVC应用程序。这个想法是后端将处理所有业务操作(如添加新货,编辑现有货物,运营商等),但将以消费者的形式或查询提供数据。
问题是......?
我的商业运营计划是消费者应该传递完成操作所需的所有信息(非常像模型,即添加货物,消费者会发送这些货物所需的所有信息。)现在,我的实际问题是数据查询。
消费者应用程序应该能够以任何方式显示后端提供的数据,而不受DTO的限制。例如,在列出货件时,我只想显示一个网格,其中包含名称,ID,发货日期等,而不是整个货运对象图。
消费者应用程序如何指定WCF端点所需的数据投影?
选项
我想过创建几个操作方法重载,为不同的目的暴露不同的DTO。即:
IList<ShipmentDetailsDTO> GetAllShipmentsAsDetailed();
IList<ShipmentListingItemDTO> GetAllShipmentsAsListingItems();
我放弃了这个想法,因为后端正在适应消费者应用程序的需求,这不是一个好习惯。后端应该与消费者无关。
另一种选择是将用于查询数据的WCF数据服务和用于业务操作的WCF常规服务相结合。这样,MVC应用程序可以像对常规LINQ查询一样针对WCF数据服务投影数据。听起来很优雅,但我想听听第二个意见。
有什么想法?如果你是我,你会怎么做?我需要一个优雅而实用的解决方案。