Asp.net-Mvc-2

架構 Web 應用程序中的服務層與業務層?

  • November 5, 2010

我知道這聽起來可能很愚蠢,但我發現很難理解服務層的需求及其與業務層的區別。

因此,我們使用 asp.net mvc 2 並擁有數據訪問層,它對數據庫進行所有查詢,然後我們擁有業務層,它具有需要完成的業務邏輯和驗證。最後,我們有了基本上擁有所有視圖的表示層。此外,作為我們庫的一部分,我們還在不同的文件夾中提供了一些幫助程序、DTO 和視圖模型類。但是我嘗試閱讀有關架構的內容,並且似乎服務層是架構的重要組成部分。

我所理解的是,服務層是呼叫所有功能的東西。但是我真的看不到我們的應用程序需要服務層嗎?或者它可能已經存在並且我看不到它……任何人都可以用一個例子來解釋服務層的重要性嗎?它與業務層有何不同,因為從我所讀到的內容看起來非常相似?如果它是第一個需要的?我們要做的就是以最好的方式建構我們的應用程序,您對此有何想法和經驗?

這一切都是關於將您的應用程序解耦成獨立的部分,每個部分都由真正做好一項工作的要求定義。

這允許您將專門的設計模式和最佳實踐應用於每個組件。

例如,業務層的工作就是實現業務邏輯。句點。公開設計為由表示層使用的 API 不是它的“關注點”。

中間的這個角色最好由服務層來執行。分解出這個專門的層允許您將更專門的模式應用於每個單獨的組件。

沒有必要以這種方式進行設計,但社區積累的經驗表明,它使應用程序更易於開發和維護,因為您甚至在開始編碼之前就確切知道每個組件的預期用途應用程序。

每一層都應該很好地完成一項工作。服務層執行的 go between 的角色是一項定義明確的工作,這就是它存在的原因:它是一個複雜性單元,以相同的方式一遍又一遍地設計,而不必重新發明輪子每次,都用不屬於它的業務邏輯來破壞這個角色。將服務層視為一個映射組件。它在業務邏輯之外,不屬於它的類,也不屬於控制器。

此外,由於從業務邏輯中分離出來,您可以獲得更簡單的業務對象,這些對象更容易被“業務”使用的其他應用程序和服務使用。

如果不是一個使您能夠將應用程序編寫為專用組件的平台,那麼 ASP.NET MVC 就什麼也不是。

由於對如何專業化組件的理解越來越多,程序正在從一碗原始的湯和意大利面演變成不同而奇怪的東西。他們可以解決的複雜性,同時仍然使用簡單的結構,正在增加。進化正在進行中。如果生活是要過的,這一定是好的,所以繼續前進。

引用自:https://stackoverflow.com/questions/4108824