0

レイヤー間でデータを転送する最良の方法を知りたいです(例:カスタムクラス、データセット、DataReader ..)。

MVPの設計パターンを考えてみましょう。モデルレイヤーからプレゼンターレイヤーにデータを転送する最良の方法を知りたいです。

4

3 に答える 3

2

どちらでも使用できます

  • DTO / ビジネス オブジェクト (BO)

    これらは、通常はロジックを含まないプレーン オールド CLR オブジェクト (POCO)です (または、BO で DTO を変換し、compare または toString メソッドをオーバーライドするための最低限のオブジェクト)。

    たとえば、新しい従業員を作成する場合、データの転送に役立つ EmployeeBO というクラスがあります。ユーザー インターフェイスは、フォームからデータをキャプチャし、BO を作成してから、この BO を BLL (ビジネス ロジック レイヤー) に送信します。この BLL は、彼が必要と考えるすべてのことを実行し、最終的に BO をデータ アクセス層に送信して、DB に永続化します。

    ここでは実際のオブジェクトを扱っているため、BLL レイヤーで BO を使用すると役立ちます。それらをリスト、辞書に格納できます... LINQ を使用してアクセスでき、最終的には ORM フレームワークまたは Microsoft Entity Framework を使用することもできます。

  • データセット

    前のものと同様。その利点は主な欠点です。db との結合度が高いです。使用しないでください。

  • データリーダー

    DataReaders の使用を検討する場合は、DataSets を使用してください :-)

  • パラメーター

すべてのパラメーターを IU レイヤーから BLL および DAL に渡します。これは実用的ではありません。

最良のものは DTOs/Business Objectsです。理想的には、DTO を使用して UI レイヤーから BLL に通信し、BLL が独自の BO オブジェクトを使用するようにします。そうしないと (私はそうしました)、UI がデータ アクセス レイヤーと結合され、バックエンドの変更が複雑になります。DTO と BO の間で分割すると、結合されないという利点が得られます。通常、どこかに DTO を BO に変換するメソッドがあります。

于 2013-04-09T09:35:03.463 に答える
0

データを転送する最良の方法は、DTO オブジェクトです。

これらのオブジェクトには、転送するデータとしてインスタンス変数 (セッターとゲッターを含む) のみが含まれています。

このクラスには動作があってはなりません

たとえば、生徒のデータを渡したい場合は、次のようにします。

class StudentBean
{
private String name;
private String age;

public void setName(String n)
{
name=n;
}

public String getName()
{
return name;
}


public void setAge(int n)
{
age=n;
}

public int getAge()
{
return age;
}

}

StudentBean クラスを作成し、そのインスタンス変数にデータを入力してから、このオブジェクトをパラメーターとして他のレイヤーに渡すことができます。

于 2013-04-09T09:38:03.347 に答える
0

最も便利な方法は、プレゼンテーション レイヤーの実装方法 (WPF、ASP.NET、ASP.NET MVC、WinForms...) によって異なると思います。

多数のDTOを持つことは、典型的で通常は適切な実装ですが、匿名型を使用することもできます。ここで同様の回答を既に提供しています: TempDataおよび/またはViewDataをサービスに渡すことは良い方法ですか? .

その回答の例は、ビジネス オブジェクトが匿名型にどのようにマップされ、その後プレゼンテーション層で使用されるかを示しています。もちろん、これらの匿名型は DTO として機能しますが、明示的に宣言する必要がないという違いがあります。さらに、アプリケーションの状態を表すビジネス オブジェクトを含むモデルがあることを前提としています。

于 2013-04-09T09:44:38.423 に答える