web-dev-qa-db-ja.com

MVCを含む3層アーキテクチャスタイルのDAL、DTO、DAOの違いは何ですか

最近、ORM(オブジェクトリレーショナルマッピング)と3層アーキテクチャスタイル(プレゼンテーション、ビジネス、およびデータの永続性)について学びました。私が正しく理解していれば、データ永続化レイヤーをDTOレイヤーとDAOレイヤーに分離できます。

次の部分がデータ永続化レイヤーでどのように連携するかを理解したいと思います。

  • DAL(データアクセスレイヤー)
  • DTO(データ転送オブジェクト)
  • DAO(データアクセスオブジェクト)

その上、私はそれを学びました

大規模なアプリケーションでは、MVCはN層アーキテクチャーのみのプレゼンテーション層です。

たとえば、MVCが単なるプレゼンテーション層であり、DTO、DAO、DALがデータ永続化層の一部である3層アーキテクチャスタイルで、それがどのように可能になるのか、私は本当に混乱しました。私は完全に迷っています。

それがどのように連携するかについて誰かが私に真実を教えてくれたら嬉しいです。

この質問を閉じないでください。さまざまな表現があります。これらは基本的に大きなアプリケーションで相互に関連しているところに見られ、どのように機能するか想像できません。

どんな答えにも感謝します!

15
Bálint Pap

それぞれの目的から始めましょう:-

[〜#〜] dto [〜#〜]

データ転送オブジェクト。これらは通常、コントローラーからクライアント(JS)にデータを転送するために使用されます。この用語は、データベースから取得したデータを実際に保持するPOCO/POJOにも使用されます。

[〜#〜] dao [〜#〜]

データアクセスオブジェクトは、DALの実装に使用されるデザインパターンの1つです。これにより、データベース上でクエリが構築および実行され、「Query Object」、「Data Mapper」などのさまざまな他のパターンを使用して結果がPOCO/POJOにマップされます。DAOレイヤーは、「Repository」パターンを使用してさらに拡張できます。

[〜#〜] dal [〜#〜]

データアクセスレイヤーは、DAO /リポジトリ/ POCOなどを使用してデータベースアクティビティを抽象化します。ORMはDALの構築に役立ちますが、それらを使用せずに実装することもできます。

[〜#〜] mvc [〜#〜]

モデルビューコントロールは、ビュー(プレゼンテーション)をビジネスロジックから分離するために使用されるパターンです。 MVCの場合、DALが実装されているかどうかは関係ありません。 DALが実装されていない場合、データベースロジックはモデルに組み込まれるだけであり、これは適切なアプローチではありません。

大規模なアプリケーションでは、MVCはN層アーキテクチャーのみのプレゼンテーション層です。

上記のように、モデルはビジネスロジックのほとんどを消費します。 N層アプリケーションでは、アプリケーション/プラットフォーム間での再利用を目的としてビジネスロジックが完全に分離されている場合、MVCのモデルは貧血モデルと呼ばれます。アプリケーションでその規模でBIを再利用する必要がない場合は、Modelを使用して保持できます。混乱はありませんよね?

それがどのように連携するかについて誰かが私に真実を教えてくれたら嬉しいです。

すべてのMV *パターンは、アイデア/概念のみを定義します。それらは実装を定義しません。 MV *パターンは主に、ビューをBIから分離することに焦点を当てています。これに集中してください。

データを保持するさまざまなオブジェクトの詳細については、 this 回答を参照してください。

15
Amit Joshi