2011-03-03 72 views
3

在ASP.Net MVC 2.0的上下文中,是否有人可以解释为什么我们需要使用DTO(数据传输对象),如果已经有模型?我曾见过一个例子,其中一个Web服务将DTO返回到asp.net,然后使用一些工厂类将其转换为Model。此Web服务与数据库进行交谈并以DTO的形式返回数据。在ASP.NET MVC中使用DTO

在我以前的项目中,我曾使用数据上下文和存储库与DB进行通信,该数据上下文和存储库用于将模型对象返回给我的控制器。然后我用这个模型传递给相应的视图。这不简单吗?我找不到DTO pattren的确切用途。

回答

5

模型表示您的视图编码的逻辑数据模型。这可能或可能不会映射1:1与数据的来源。在模型== DTO的情况下,我同意,DTO有点多余。

在我使用MVC的大多数情况下,拥有单一数据源非常罕见,或者缺乏将逻辑视图与物理源分离的愿望。例如,我经常进行多个服务和数据库调用来构建单个逻辑模型。

+0

感谢您的解释! 那么在那种情况下,当DTO由多个来源创建时,我们可以使用这个dto本身来绑定我们的视图?或者我们只需要将1:1的数据复制到我们的模型中就可以达到这个目的? – 2011-03-03 04:58:16

+0

我们发现了一些明显的模式出现 - 复合模型结构的字段指向DTO实例,复合模型指向DTOs周围的包装。将数组转换为字典以及使用多个DTO生成对象以放入模型的复杂工厂。我们认为该模型是我们想要为视图开发人员公开并记录的丰富的编程API。 – stephbu 2011-03-03 05:03:41