何时使用DTO和Breeze都很好?

时间:2013-03-26 03:41:42

标签: breeze single-page-application

我已经构建了我的WebAPI来向客户端提供DTO,作为将域模型与客户端模型分离的一种方法。我现在正在加速像Breeze这样的客户端技术,我想知道如何使用Breeze会影响这种模式,以及它是否是一种/或者某种情况。什么时候使用微风和DTO是个好主意?

1 个答案:

答案 0 :(得分:0)

Breeze并不关心您是否要使用DTO或更完整的领域模型“实体”对象。从.NET的角度来看,Breeze可以将其全部查询服务应用于任何可以作为IEnumerable或IQueryable公开的集合。如果您不想使用查询,则可以通过带参数的WebApi方法公开单个DTO或DTO集合。

您还可以选择使用Breeze查询和投影来从服务器上的实体构造DTO对象,并且只能在客户端上使用DTO。

如果查询对您很重要,那么从您的角度来看,DTO与域模型“实体”的主要问题是您将DTO作为“可查询”对象公开是多么容易,以及查询可能的效率如何。许多ORM工具(如Entity Framework)能够转换查询,以便大多数繁重的处理由数据库引擎执行。与尝试迭代DTO集合以执行查询的替代方法相比,此类优化可以非常高效。

一个有趣的替代方法是使用类似于Entity Framework和WebApi的内容来仅公开您希望在客户端上公开的域模型的映射子集。即您使用实体框架为您执行DTO映射。所以你有两个EF模型,一个完整的域模型和一个DTO域模型。这样做的好处是,您仍然可以获得查询优化的优势。

希望这有帮助。