Web サイトのパフォーマンスの観点から見た DTO の長所と短所は何ですか?
-
01-07-2019 - |
質問
Web サイトのパフォーマンスの観点から見た DTO の長所と短所は何ですか?(データベースが Web サーバーとは別のアプリ サーバー上でアクセスされ、Web サーバーがデータベースに直接アクセスできる場合について話しています。)
解決
DTO はパフォーマンスの問題ではありません。あなたが質問しているのは、階層化によるパフォーマンスへの影響だと思います。特に、Web 層 (Web サーバー) とデータ層 (データベース サーバー) の間でアプリケーション層を使用します。
一般に、その影響として、レイテンシが増加します (ネットワークのラウンドトリップが余分に発生します) が、負荷をマシン間で分割することで追加の容量が得られます。
このようなことを行うもう 1 つの一般的な理由 (これもパフォーマンス以外の理由) は、アプリケーション サーバーとデータベース サーバーをファイアウォールの内側に保ちながら、Web サーバーを DMZ 内に配置できるようにするためです。
もう 1 つの潜在的な理由 (パフォーマンス以外) は、単一のアプリケーション上に複数の UI を接続できることです。私は過去のプロジェクトでこれを実行し、素晴らしい結果をもたらしました(ビジネスがそれを必要とした場合)。
また、そのような性質のアーキテクチャを維持するために必要な作業を過小評価しないでください。階層化されていないソリューションよりも作業がかかるため、必要になることが予想される場合にのみ使用してください。
そうは言っても、DTO の使用には階層化の使用が必須ではありません。
私が見つけた階層化についての最も優れた説明は、Martin Fowler の著書『Anaization Patterns』から来ています。背面には、アプリケーションのファサードと階層化に関する小さなセクションがあります。
前の回答を繰り返しますが、DTO はパフォーマンスの問題ではありません。これは、アプリケーションのさまざまな部分を分離するために使用されるメソッドを持たない単なるクラスです。
Martin のもう 1 冊の本『Patterns of Enterprise Application Architecture』も手に取ってみることをお勧めします。DTO の「パターン」はそこに文書化されています。