对于服务层来说,使用不处理数据库的方法是不好的做法?

时间:2010-11-28 06:46:45

标签: .net asp.net service-layer

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

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

您会注意到有一些方法不处理数据库,但我觉得这是一个使用它们的好地方。

这被认为是不好的做法吗?

注意:我的Repository Layer严格处理数据库。我流了。

数据库> LINQ(DBML)>存储库层>服务层>控制器(或其他)。

2 个答案:

答案 0 :(得分:1)

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

但是,可能有正当理由在服务层上进行操作,而这并不完全与DB有关。

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

答案 1 :(得分:1)

@Predeep有一个观点。不要将属于webproject的方法放在服务层中。你只是添加另一个依赖。

服务层不应该只是存储库层顶部的一个层。它可能包含修改数据库或任何其他数据源的信息的逻辑。添加其他不需要对数据库执行任何操作的方法完全没问题。这就是图层的用途。否则你可以跳过那一层。