我的用户服务中有以下方法

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)>存储库层>服务层> Controller(或其他)。

有帮助吗?

解决方案

您已经看到的例子,这似乎是一个不好的做法。如果您看到您从服务层询问的所有信息,则实际上可以在控制器本身上使用。您为什么要越过应用边界以获取此信息?

但是,可能有一个有效的理由在服务层上进行操作,该操作并非完全处理数据库。

在您的情况下,我会说在控制器中使用类似的助手类。

其他提示

@predeep有一点。不要将属于服务层中WebProject的方法放置。您只是添加另一个依赖性。

该服务层不应该只是存储库层顶部的一层。它可以包含逻辑修改数据库或任何其他数据源的信息。添加其他不必对数据库做任何事情的方法是完全可以的。这就是层的目的。否则,您可以跳过该层。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top