似たようなタイトルの質問を見ましたが、成功しませんでした。別のビジネスエンティティからデータをプルするために、ビジネスレイヤーからサービス参照を作成できますか?それとも、サービスレイヤーから実行する必要がありますか?
1 に答える
これは、巨大な哲学的議論に巻き込まれる可能性があるため、答えるのは簡単ではありません。ただし、他のビジネスエンティティを取得するために、ビジネスロジックレイヤーをサービスレイヤーに戻す必要はないと思います。
このシナリオの一般的なアプローチは、ビジネスロジックの上にファサードレイヤーを配置することです。その層は、複数の事業体の検索が必要な場合の応答を調整する責任があります。それで:
サービス->ビジネスファサード->ビジネスロジック->データ
編集:小さくてシンプルなアプリの場合、これはやり過ぎです。ファサードレイヤーを削除し、サービスにロジックメソッドを呼び出させるか、サービスに複数のロジックメソッドを呼び出させます。
サービスレイヤーは実際には単なるパススルーであり、ロジックをできるだけ少なくする方がよいでしょう。これにより、サービスレイヤーを置き換えるか、サービスコールを行う必要がない場合に、信頼できるアプリ/サービスがファサードレイヤーを直接(ローカルマシン上で)呼び出すことができます。
このアプローチにより、ファサードレベルで「信頼の線」を配置し、そこにセキュリティを実装することもできます。セキュリティチェックを実行する場合、およびこの「信頼のライン」で他のことを実行する場合は、ビジネスファサードへのサービス呼び出しを1回だけ実行する必要があるため、取得する必要のあるエンティティごとにこのロジックを繰り返すことはありません。
ファサードレイヤーは、ロジックレイヤーのメソッドを呼び出すメソッドのレイヤーです。ファサードメソッドは、ロジックレイヤーで1つのメソッドを呼び出すのと同じくらい単純な場合もあれば、ロジックレイヤーで複数のメソッドを呼び出して、適切なドメインエンティティまたはDTOの一貫した応答を調整するのと同じくらい複雑な場合もあります。
私は続けることができました。確かに、この議論に捧げられた本全体があります。うまくいけば、それは少なくとも大まかな概要に役立つでしょう。