ASP.NET核心应用程序中最好的服务层结构是什么



我使用ASP.NET Core MVC已经有一段时间了,在服务层组织代码时遇到了一个巨大的问题。在一些应用程序中,服务是相互使用的(根据我的说法,这可能会导致循环依赖性问题(,但在另一些应用程序,服务只注入db上下文,而不注入其他内容(我认为这更好,因为它遵循separation of concerns主体(。另一个问题是,当一个操作应该执行多个操作时,例如,保存一个组的实习,然后将所有当前组成员分配给该实习。如果逻辑被分离为InternshipServiceGroupService,并且它们在InternshipsController的某些操作中被调用,如下所示:

this.internshipService.Add(someInternshipDto);
var members = this.groupService.GetAllMembers();
this.internshipService.AssignGroupMembers(members);

如果AssignGroupMembers由于某种原因失败,我们的数据库中会有不一致的数据。这个问题的一个解决方案就是移动InternshipsService中的所有逻辑,完成我需要的所有操作,最后调用SaveChanges(),但这会破坏separation of concerns的主体。

我对此很困惑,所以请告诉我,为了解决这些问题,你做了哪些事情!

我认为您混合了(1(业务逻辑和(2(数据持久性的关注点。您可以有一个处理逻辑的服务,以及一个处理数据的通用存储库(即DbContext(。

例如:

this.repository.Add<Internship>(someInternshipDto); // data
var members = this.repository.GetAll<Member>(); // data
this.service.AssignGroupMembers(members); // logic
this.repository.SaveChanges(); // data

最新更新