2017-03-22 30 views
-1

我該項目的工作中,我們有以下順序我們可以跳過/旁路多層次體系結構中的中間層

網絡層(ASP.NET MVC)分層體系結構 - > WCF服務 - >業務圖層 - >數據層(實體框架) - >數據庫(SQL SERVER)

Web層託管在一個Web應用程序(稱爲Web層)和其他層(WCF,業務層和數據層)另一個Web應用程序(稱爲App層)

所有Web請求都按上述順序傳播。

現在我們有一個組件在Windows服務中,它需要與數據庫通信,所以我應該直接從Windows服務通過繞過/跳過服務和數據層調用數據庫的更好的方法,或者我應該使用下面流

Windows服務 - > WCF服務 - >業務層 - >數據層(實體框架) - >數據庫

哪一個是更好的建築設計。

回答

1

如果沒有任何需要的Windows服務與數據層進行通信的廣泛配置,那麼我不明白你爲什麼不這樣做。另外它會保持你的架構一致(代碼例外可能會妨礙可維護性)。然而,如果將windows服務連接到數據層需要大量開銷和/或重構,那麼答案取決於windows服務通信與數據層的範圍有多大(是否只需要幾個調用;未來有多大可能擴展到包括更多的呼叫)。我不會花費幾個小時或幾天的時間重構現有代碼,僅僅爲了一個特殊的,一次性的和/或簡單的案例的一致性(記住,每次代碼更改應該被測試)。

重要的是要衡量現在可以獲得什麼與之後可能會花費什麼之間的差異。

+0

喜Samus,我們的Windows服務應該基於一些推動機制,即如果任何觸發器將被生成,然後Windows服務需要執行一些業務操作。其他的一點是,這個Windows服務不需要經常與數據庫通信。 –