为poco提供控制器/服务的服务

时间:2014-09-12 19:14:42

标签: asp.net-mvc asp.net-mvc-5 service-layer

我即将构建我的服务层,我有些疑惑。 我应该创建与控制器相关的特定服务(cs类+接口)还是应该创建与poco类相关的服务?

让我举个例子。 我有:StudentPoco,TeacherPoco,StudentService,TeacherService,StudentController,TeacherController。

现在形成StudentController我想调用service的方法 - GetAllTeachers(...) - 学生想看一个列表。我应该把这个函数放在StudentService中,因为我是从StudentController调用的,还是应该把它放在TeacherService中,因为它与TeacherPocos有关 - 我们正在和老师打交道。如果我们从StudentController调用GetOnlyMyTeachers(...)会发生什么?

下一期:一个服务应该引用它使用的服务吗?如果StudentService引用了TeacherService并且TeacherService引用了StudentService,该怎么办?可以吗?

我想注意我熟悉DI。

我首先使用MVC5和EF6代码。 我不想使用存储库和UoW模式。我将在所有服务中使用DbContext引用。多次调用savechanges方法是对的吗?

您如何看待我的怀疑?

1 个答案:

答案 0 :(得分:0)

首先,了解通常服务层(有时称为业务层)是关于封装业务逻辑非常重要。在构建服务层时,在对方法进行分组时请记住这一点。尝试并忽略它返回的类型,可能存在可能StudentService需要返回方法的教师poco的情况。实施不应该推动业务层的设计。

在您的GetAllTeachers()方法的这个例子中。无论是从TeacherService还是StudentController调用,都属于TeacherController

服务呼叫服务也很好。在StudentService内部,您可能希望从TeacherService获取GetTeacher()方法。如果您熟悉依赖注入,那么最好的解决方案是通过您选择的IoC注入这些依赖项。