0

我读过使用 DTO 的主要原因之一是尽量减少服务层和远程前端之间的往返。最小化往返本质上意味着减少服务方法调用的数量,这是通过每次调用传输更多数据来完成的。

a) 但是不能通过具有很多参数的服务方法来减少往返吗?

b) DTO 是否能够比具有大量参数的服务方法更能减少往返次数?如果是,如何?如果不是,那么我不太明白如何减少往返次数是使用 DTO 的主要原因之一?

谢谢

4

2 回答 2

2

我们没有任何上下文,所以您所读内容的作者可能有其他意思,但在这种情况下,DTO 确实可以减少从表示层到服务层的往返次数。

假设您有一个页面,您必须在其中列出用户,并为每个用户显示该用户发布的答案数量。假设您的页面列出了 10 个用户。

如果您不使用 DTO,则必须调用一个方法来获取有关 10 个用户的信息。对于每个用户,您必须调用第二种方法来获取他发布的答案的数量。这进行了 11 次方法调用。

如果您使用 DTO 保存有关用户的显示信息,以及他的答案数量,您可以调用一个方法来获取 10 个用户的列表,并一次获取所有信息。

请注意,返回 10 个用户的列表,每个用户都包含其发布的答案列表不是一个选项,因为您将加载大量信息(每个用户的 2453 个答案)只是为了显示答案的数量。

于 2012-07-15T19:52:55.437 回答
1

除了 JB Nizet 在他的回答中提到的之外,我们一直在使用 DTO 来减少客户端和服务器之间传输的数据量。一种这样的情况是当我们需要一些参考数据或查找数据时。例如,如果我们有一个只读的 Country 集合,在视图或某种前端显示国家列表,我们不需要每次都传递国家列表。我们可以缓存集合,而 DTO 可用于仅传递 selectd 值。DTO 可以有国家代码,如“US”、“GB”、“IND”等,或者一些与国家代码相对应的唯一数值。在客户端,您可以有一个映射器,它将代码映射到 UI 小部件的选定值,如下拉列表。

于 2012-07-16T05:12:29.047 回答