1

アプリケーション用の BLL を構築しようとしています。私が見たり読んだりしたことから、BLL はステートレスであるべきだと思われます。これは、すべての BLL メソッドが静的である可能性があるということではありませんか? または、少なくとも各 BLL クラスのインスタンスが 1 つだけ必要ですか? なんらかの理由でこれは私には奇妙に思えるので、実験を深く掘り下げる前に、棒の端が間違っていないかどうかを確認したほうがよいと思いました.

また、データは状態を表すため、BLL オブジェクトにデータが含まれてはならないことも意味すると考えています。そのため、呼び出された BLL 操作ごとに、必要なデータを再クエリ (またはキャッシュからフェッチ) してから破棄する必要があります。それは正しいと思いますか?

ありがとう。

4

1 に答える 1

2

理論的には、そうです、ステートレスBLLは、すべてのメソッドが静的である可能性があることを意味します。

ただし、静的ではなくBLLオブジェクトのインスタンスを使用する方向に進む可能性のあるいくつかの考慮事項があります。

  1. 静的メソッドはクラス間の緊密な結合を導入し、たとえばインターフェースを使用して依存関係を緩く結合することを防ぎます。インターフェイスを使用すると、BLLのテスト容易性が向上します。これは、サービスレイヤーの単体テストを作成するときにBLLをモックできるようになったためです。BLLメソッドが静的である場合、通常、「回避策」なしではこれを行うことはできません(たとえば、.Net環境で必要になる場合TypeMockなど)。Microsoft Fakes

  2. 複雑なBLLメソッド(大規模なトランザクションロジックなど)では、各ビジネスルールをいくつかの個別のメソッドにリファクタリングし、出力で、すべての検証とルール違反を、すべての違反。この場合、検証対象の1つまたは複数のエンティティをシャントしてルール違反を蓄積し、代わりにクラスインスタンスにこれらをステートフルに保存することを選択するのは面倒な場合があります。インスタンスBLLの基本クラスまたはジェネリックがここで役立ちます。

于 2010-11-19T15:48:06.993 に答える