簡體   English   中英

ASP.NET核心應用中最好的服務層結構是什么

[英]What is the best service layer structure in ASP.NET Core application

一段時間以來,我一直在使用 ASP.NET Core MVC,在服務層組織我的代碼時遇到了一個巨大的問題。 在某些應用程序中,服務是相互使用的(根據我的說法,這可能會導致循環依賴問題),但在其他應用程序中,服務只注入數據庫上下文而不注入其他任何東西(我認為這更好,因為它遵循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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM