我即将构建我的服务层,我有些疑惑。 我应该创建与控制器相关的特定服务(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方法是对的吗?
您如何看待我的怀疑?
答案 0 :(得分:0)
首先,了解通常服务层(有时称为业务层)是关于封装业务逻辑非常重要。在构建服务层时,在对方法进行分组时请记住这一点。尝试并忽略它返回的类型,可能存在可能StudentService
需要返回方法的教师poco的情况。实施不应该推动业务层的设计。
在您的GetAllTeachers()
方法的这个例子中。无论是从TeacherService
还是StudentController
调用,都属于TeacherController
。
服务呼叫服务也很好。在StudentService内部,您可能希望从TeacherService获取GetTeacher()方法。如果您熟悉依赖注入,那么最好的解决方案是通过您选择的IoC注入这些依赖项。