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