0

これが解決策です。

ここに画像の説明を入力

ボル。ビジネス オブジェクト層。BL。ビジネス層。ダル。データ層。(後工程で開発するphpなので、ソリューションにWebページはありません)

BOLはBLを参照し、次にBLはDALを参照します。

各 .cs ファイルの中身はご存知だと思います。だから、私はこの 3 層アーキテクチャと物事を分離しておくことが本当に好きです (この方法で作業するのは初めてです)。ここで、レイヤーを介してデータを送受信する際に、いくつかの問題に遭遇しました。

例: BL (methods.cs)

  public class Methods
    {
        LineaDAL obj = new LineaDAL();
        public DataSet GetLinea()
        {
            var ds = new DataSet();
            ds = obj.GetLineaDAL();
            return ds;
        }
     ////more code
     }

これはうまく機能し、DAL (参照されている) からオブジェクトを作成し、DAL を呼び出してDataSet. これはクールで、DAL/SQL から何かを取得するのに最適です。

しかし今、私は更新に取り組んでおり、BL にパラメーターを送信する DAL 関数を呼び出してもらいたいと考えています。そのパラメーターを最初に試したのは、もちろんBOLのオブジェクトでした。明らかな理由で不可能でした。BL は BOL について知りません。

これが起こったとき、私は読み始め、いくつかの良いアプローチを見つけました. そのうちの 1 つは、DTO を作成することです...階層とレイヤーでのトップダウンの分離環境が本当に好きなので、これはあまり好きではありません。それで、私は探し続け、関連するものを見つけましEventArgsInterfacesが、正しい道を進んでいるかどうかを確認するためにまだ頭を悩ませています.

私は DAL や DataSets などを使って BL を作業しています。しかし、最上層でBOLオブジェクトを操作する方法はありますか? トップダウン参照を保存するためにこれが不可能な場合DataSets、BOL <-> BL にも使用する必要がありますか? EventArgs行く方法はありますか?

ありがとうございました。

4

2 に答える 2

1

マシン間で分割する場合は、回線を介して送信する何らかのデータ コントラクトがあります。そのため、おそらくその時点で DTO を導入する必要があります。

選択 (読み取り) を実行すると、DL レイヤーは何を返しますか? あなたが述べた理由により、選択のためにBOLオブジェクトを返すことはできません(BLはBOLへの参照がありません)。

BL まで DataSet (データ層の概念のようなもの) を返すのは少し面倒に思えます。したがって、DataSet からマップする BL オブジェクト (DTO) を作成し、そのオブジェクトを BOL に公開することをお勧めします。これにより、参照が整理され、各レイヤーの責任がより明確に調整されます。

于 2012-07-12T11:33:17.560 に答える
1

レイヤー間で参照および共有できる一連のエンティティが必要な場合、これらは他のすべてのプロジェクトが参照できるスタンドアロン プロジェクトに存在する必要があります。

異なるアプリケーション レイヤーが異なるマシンに分散されている場合、エンティティ ライブラリは各レイヤーと共に分散できます。EventArgs は絶対に行くべき道ではありません。

于 2012-07-12T10:39:42.847 に答える