2010-11-28 59 views
0

我有我的用戶服務服務層是否具有不處理數據庫的方法是不好的做法?

Public Interface IUserService 
    Sub AddUser(ByVal claimedidentifier As String, ByVal notes As String) 
    Function GetAllUsers() As IList(Of User) 
    Function GetUserByID(ByVal id As Integer) As User 
    Sub UpdateUser(ByVal user As User) 
    Sub SubmitChanges() 

    ''# Below are methods that do not require database calls. 
    Function GetUserIPAddress() As String 
    Function GetUserBrowser() As String 
    Function GetUserOperatingSystem() As String 
    Function GetUserSubDomain() As String 
End Interface 

以下方法,你會發現,有不與數據庫處理的幾種方法,但我覺得這是一個很好用的地方他們。

這被認爲是不好的做法?

注意:我的存儲庫層嚴格處理數據庫。我的流程走了。

數據庫> LINQ(DBML)>存儲庫層>服務層>控制器(或其他)。

回答

1

舉例說明你已經看到了,這似乎是一種不好的做法。如果您看到從服務層請求的所有信息實際上都可用於您的控制器本身。爲什麼你想跨越應用程序邊界來獲取這些信息?

但是可能有一個合理的理由在服務層上進行操作,而這個操作並不完全與數據庫打交道。

在你的情況下,我會說在控制器中使用類似的幫助類。

1

@Predeep有一點。不要將屬於webproject的方法放在服務層中。你只是添加另一個依賴項。

服務層不應該只是存儲庫層的頂層。它可能包含修改來自數據庫或任何其他數據源的信息的邏輯。添加其他不需要對數據庫做任何事情的方法是很好的。這就是圖層的用途。否則,你可以跳過這一層。

相關問題