1

我用相似的標題查看了沒有成功的問題。我可以從業務層創建服務引用以從其他業務實體提取數據嗎?還是應該從服務層完成?業務層與服務層的服務引用

+0

謝謝Bob!剛剛爲以前的問題做過...... –

回答

4

這並不容易回答,因爲它可能會成爲一個巨大的哲學討論。但是,我認爲您的業務邏輯層不應該返回到您的服務層以獲取其他業務實體。

此場景的典型方法是在業務邏輯之上有一個Facade層。當需要檢索多個商業實體時,該層負責協調響應。所以:

服務 - >業務外觀 - >業務邏輯 - >數據

編輯:對於小型,簡單的應用程序,這是矯枉過正。刪除外觀層,並簡單地讓服務調用一個邏輯方法,或讓服務調用多個邏輯方法。

服務層實際上只是一個傳遞,你最好用盡可能少的邏輯。這使得可以替換服務層,或者在不需要進行服務調用時讓受信任的應用程序/服務直接(在本地計算機上)調用Facade層。

此方法還允許您在門面級別放置「信任線」,並在此處實施安全性。如果要進行安全檢查,並且可能還有其他事情在這個「信任線」上,那麼我們只需要一個服務調用到商業門面,所以我們不會爲每個需要檢索的實體重複這個邏輯。

外觀層只是調用邏輯層上的方法的一層方法。 Facade方法可以像調用邏輯層上的一個方法一樣簡單,而且它們可以像調用邏輯層上的多個方法一樣複雜,並協調合適的域實體甚至DTO的一致響應。

我可以繼續。確實有很多專門討論這個問題的書。希望這至少有助於廣泛的概述。

+0

所以鮑勃你在說不!到業務層的服務引用?在這種情況下,你是否建議將商業門面的VS項目分開? (它與服務層分開)。 –

+0

正確。希望您的業務層在安全機器上運行,並且客戶端代碼不會直接調用它們。客戶端代碼會調用服務層,服務層會調用業務外觀等等。一個單獨的項目通常是要走的路,但這取決於所有這些是多大。對於大型應用程序,是的,使用一個單獨的項目。 –

+0

好的,謝謝! –