レイヤード アーキテクチャでは、レイヤーはその下のレイヤーによって提供されるサービスのみを使用する必要があることを多くの本で読みました。エンタープライズ アプリケーションで一般的に使用されるレイヤーは次のとおりです。
- プレゼンテーション
- 仕事
- 持続性
つまり、ビジネス レイヤー (ビジネス ロジックを含む) のサービスは、永続レイヤーによって提供されるサービスにのみアクセスする必要があります。
ユーザーにメッセージを送信する MessageService があります。オブジェクトの状態に重大な変化があった場合は常に、関連するすべてのユーザーにその変化について通知する必要があります。これは、変更を識別したビジネス レイヤーのサービスが MessageService を使用してメッセージを送信する必要があることを意味します。しかし、messageService はそれ自体がビジネス レイヤーにあるため、同じレイヤーの他のサービスがそれにアクセスすることはできません。
では、コードのアーキテクチャに違反せずに MessageService を使用するにはどうすればよいでしょうか?