2010-11-28 34 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的方法放在服务层中。你只是添加另一个依赖项。

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

相关问题