2012-09-20 23 views
10

私は単純な3層アーキテクチャを使用しています。 これでは、UI、BLとDLの間で通信するDTOクラスを使用しています。 レイヤー間の通信にはより良い方法がありますか?またはこれは正しい方法ですか?3層アーキテクチャでのDTOの使用

+0

は – jgauffin

答えて

8

DTO、データ転送オブジェクトは、あなたの消費者とあなたのサービスの間でデータを転送するときに使用、配布層のための概念です。したがって、サービスを公開しない場合は、DTOから降りてください。

質問に答えるには、アプリケーションの複雑さにもよります。単純ならCRUD操作を使用するか、DataTableDataSetを通信に使用することもできます。

そうでない場合は、DDDからドメインエンティティは、レイヤ間の通信のためのコアオブジェクトです:データアクセス層、ビジネスロジック層とプレゼンテーション層。

  1. DTO、使用あなたの公共サービスは、主な目的は、消費者とあなたのサービス間で通信する:

    は基本的には、アプリケーション内のオブジェクトのいくつかの異なるタイプがあります。
  2. モデルを表示し、UIをサポートするプレゼンテーションレイヤーのオブジェクト。
  3. ドメインエンティティは、ビジネスロジックを含むビジネスロジックレイヤからのものです。

という言葉には注意してください:

  1. ティア:それは、データベースサーバ、ウェブサーバのように、物理的な意味します。
  2. レイヤ:Persentation層、ビジネスロジック層、データアクセス層:それは論理的な層を意味します。
7

これは非常に有益ですtutorialをお読みください。それはあなたのシナリオに適したDTOの決定に役立ちます。

+0

おかげで、私が読んだ最高のDTOのチュートリアルを「通信」を定義します。要約すると、DTOはデカップリングの観点から最適です。プレゼンテーション層とビジネス層を分離します。しかし、それはPyrrhic勝利することができます。何百ものDTOクラスを作成すると、プロジェクトが膨らんでオーバーヘッドが発生します。著者は、DTOを使用するかどうかは、プロジェクトの詳細に依存していると言います。彼は、エンティティオブジェクトがプレゼンテーション層で参照されることを許されている実用的な途中の方法を提案しています。 – Gruber

1

@ Talhaの回答に加えて、私はこのarticleをお勧めしたいと思います。それはEF指向ですが、そこに記述されている概念は一般的なものです。

関連する問題