2012-04-10 7 views
1

私はCSLAフレームワークでVB.netで書かれた大きなレガシーアプリケーションを学んでいます。多くのオブジェクトは、BusinessBaseおよびBusinessListBaseから継承しているようです。私がVisual Studioで "定義に行く"とき、私はこれらのクラスがCSLA名前空間の一部であることを知っています。これらのクラスは何ですか?彼らはCSLAフレームワークでどのような役割を果たしていますか?ルートオブジェクトや子オブジェクトのような他のCSLAの概念とはどのように関連していますか?CSLAフレームワークのBusinessBaseクラスとBusinessListBaseクラスは何ですか?

答えて

6

BusinessBaseおよびBusinessListBaseは、すべての編集可能な(つまり読み取り専用ではない)ビジネスオブジェクトが継承する抽象基本クラスです。いずれかは、ビジネスオブジェクトグラフに応じてルートオブジェクトまたは子オブジェクトになります。これらのクラスは、アプリケーションのインスタンスクラス(IsNew、IsDirty、Save()など)でCSLAフレームワークのプロパティとメソッドを提供するクラスです。基本クラスは、DataPortalとの通信、子クラスが定義するビジネスルールのチェック、オブジェクトの編集/元に戻すレベルの管理などの面倒な作業も行います。要するに、ビジネスオブジェクトは、CSLAフレームワークの残りの部分と統合するために、これらのクラスの1つを継承します。 CSLAフレームワークの枠内で、ビジネスオブジェクトがタスクを実行したりプロパティを公開したりする必要がある場合、これらのクラスがその場所にあります。

事のいくつかを、これらのクラスが行うない行います

  • (彼らは、そのようななどIsNew、IsSavable、などのオブジェクト/ライフサイクル管理プロパティを定義しませんが、ない性質が関連保持するために、ビジネスのプロパティを定義しますビジネスデータ)
  • は、ビジネスの性質(再び、CSLAの管理プロパティは、基底クラスによって処理されている)、このような「顧客名が値を持たなければならない」として
  • 割り当てビジネスルール()
  • Tを初期化しますアルク
  • 、シリアライズなどのデータベース
  • マークオブジェクトへ

BusinessListBaseは、リストクラスのためのものであり、.NETを継承する(それがDataPortalによって行われます)foo.DataPortal_X方法がDataPortal.Fetch<foo>(args);を呼び出すことによって実行されますを決定しそのため、リストであるCSLAビジネスオブジェクトはBusinessListBaseを継承する必要があります。オブジェクトはリストなので、期待どおりにBusinessListBaseからオブジェクトを追加、削除などできます。

ReadOnlyBaseおよびReadOnlyListBaseは、ビジネスカウンターパートと同じ目的を果たす抽象基本クラスですが、オブジェクトが読み取り専用であることも保証します。彼らが提供するものは、ほとんどがビジネス基盤のサブセットであり、プロパティがセッターを実装するのを妨げるようないくつかの追加の制約があります。

私は、CSLAに関するいくつかの便利なランプアップ情報について、this questionを見てみることをお勧めします。

関連する問題