1

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

4

1 に答える 1

9

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

これらのクラスが行わないことのいくつか:

  • ビジネス プロパティを定義します (IsNew、IsSavable などのオブジェクト/ライフ サイクル管理プロパティは定義しますが、関連するビジネス データを保持するプロパティは定義しません)。
  • ビジネス プロパティを初期化します (ここでも、CSLA の管理プロパティは基本クラスによって処理されます)。
  • ビジネス ルールの割り当て (「顧客名には値が必要」など)
  • データベースと話す
  • オブジェクトをシリアライズ可能としてマークする
  • 呼び出しによって実行される foo.DataPortal_X メソッドを決定しますDataPortal.Fetch<foo>(args);(これは DataPortal によって行われます)。

BusinessListBase はリスト クラス用であり、.NET 基本リスト機能を継承するため、リストである CSLA ビジネス オブジェクトは BusinessListBase を継承するだけで済みます。オブジェクトはリストであるため、期待どおりに BusinessListBase からオブジェクトを追加、削除することができます。

ReadOnlyBase と ReadOnlyListBase は、対応するビジネス クラスと同じ目的を果たす抽象基本クラスですが、オブジェクトが読み取り専用であることも保証します。それらが提供するのは、ほとんどがビジネス ベースのサブセットであり、プロパティがセッターを実装できないようにするなど、いくつかの追加の制約が挿入されています。

CSLA に関する便利なランプアップ情報については、この質問をご覧になることをお勧めします。

于 2012-04-10T20:09:24.733 に答える