1

我在許多書中閱讀過,在分層體系結構中,一層應該只使用它下面的圖層提供的服務。常用的層是在企業應用程序是:分層體系結構中的常見服務

  1. 介紹
  2. 業務
  3. 持久

這意味着在業務層服務(包含業務邏輯)應只訪問接入服務由持久層提供。

我有一個MessageService發送消息給用戶。每當對象的狀態發生重大變化時,都必須通知所有相關用戶有關更改。這意味着標識更改的業務層的服務必須發送使用MessageService來發送消息。但是messageService本身就是業務層,因此同一層的其他服務不應該訪問它。

那麼我們如何在不違反代碼體系結構的情況下使用MessageService呢?

+0

阿米特,你是什麼意思的'所有關聯的用戶'? –

+0

我是指所有對對象狀態有任何改變感興趣的用戶。例如,一個新用戶被添加到一個組中,因此必須使用MessageService通知所有組成員。 –

+0

以後通過演示文稿對對象進行更改嗎?如果是這樣,爲什麼不只是讓業務層將更改傳回到表示層,然後在持久性工作完成時調用消息傳遞服務。 –

回答

0

表示層(或頂層)並不僅僅意味着UI,它可以是任何消耗系統中的服務的東西。即一個Scheduled Job可以位於頂層(可能你不想將它命名爲表示層)。在你的情況下,我覺得MessageService應該在頂層,因爲它會消耗系統中的其他服務。例如,如果您編寫Web服務,它應該位於服務層之上,但您可能希望以不同的方式命名它。

+0

感謝您的回覆。我認爲它不應該是表示層的一部分,因爲可以有多個表示層。如果MessageService被添加到表示層,它必須被複制,我認爲這不是一個好的解決方案。 –