0

DTOを使用する主な理由の1つは、サービスレイヤーとリモートフロントエンド間のラウンドトリップを最小限に抑えることであると読みました。ラウンドトリップを最小限に抑えるということは、基本的に、サービスメソッド呼び出しの数を減らすことを意味します。これは、呼び出しごとにより多くのデータを転送することによって行われます。

a)しかし、多くのパラメータを持つサービスメソッドによってもラウンドトリップの削減を達成することはできませんか?

b)DTOは、多くのパラメーターを使用するサービスメソッドよりもラウンドトリップを削減できますか?はいの場合、どのように?いいえの場合、ラウンドトリップの数を減らすことがDTOを使用する主な理由の1つである理由がよくわかりません。

ありがとうございました

4

2 に答える 2

2

文脈がないので、あなたが読んだものの作者は別のことを意味しているのかもしれませんが、DTO がプレゼンテーション層からサービス層へのラウンドトリップの数を実際に減らすことができるシナリオを次に示します。

ユーザーをリストし、ユーザーごとに、ユーザーが投稿した回答の数を表示する必要があるページがあるとします。また、ページに 10 人のユーザーがリストされているとします。

DTO を使用しない場合は、メソッドを呼び出して 10 人のユーザーに関する情報を取得する必要があります。ユーザーごとに、2 番目のメソッドを呼び出して、投稿された回答の数を取得する必要があります。これにより、11 回のメソッド呼び出しが行われます。

ユーザーについて表示する情報を保持する DTO を使用する場合、回答の数と同様に、1 つのメソッドを呼び出して 10 人のユーザーのリストを取得し、すべての情報を一度に取得できます。

回答の数を表示するためだけに非常に多くの情報 (各ユーザーの 2453 の回答) をロードするため、投稿された回答のリストを含む 10 人のユーザーのリストを返すことはできません。

于 2012-07-15T19:52:55.437 に答える
1

JB Nizet が彼の回答で言及したこととは別に、DTO を使用して、クライアントとサーバー間で転送されるデータの量を減らしてきました。そのようなシナリオの 1 つは、参照データまたはルックアップ データが必要な場合です。たとえば、ビューまたはある種のフロント エンドで国のリストを表示する Country の読み取り専用コレクションがある場合、毎回国のリストを渡す必要はありません。コレクションをキャッシュすることができ、DTO を使用して selectedd 値のみを渡すことができます。DTO には、「US」、「GB」、「IND」などの国コード、または国コードに対応する一意の数値を含めることができます。クライアント側では、コードをドロップダウン リストのような UI ウィジェットの選択された値にマップするマッパーを使用できます。

于 2012-07-16T05:12:29.047 に答える