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

4

2 回答 2

1

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

但是,可能有正当理由在服务层上进行不完全处理数据库的操作。

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

于 2010-11-28T07:09:46.360 回答
1

@Predeep 有道理。不要将属于 webproject 的方法放在服务层中。您只是添加了另一个依赖项。

服务层不应该只是存储库层之上的一层。它可以包含修改来自数据库或任何其他数据源的信息的逻辑。添加其他不需要对数据库做任何事情的方法是非常好的。这就是图层的用途。否则,您可以跳过该层。

于 2010-11-28T07:16:32.797 回答