[英]How to remove circular dependency of multiple layers in ASP.NET CORE
我在ASP.NET CORE
上的一個應用程序中遇到了一些架構問題。 我在 Application 文件夾中有 Web 應用程序,在Data
中有Business
和 Context 相關事物的業務層。 最后在Model
我有模型。
現在的問題是I use Data and Model in Business layer and then I use the Business in Application controllers
。 但在某些情況下,我需要將Data in Application to
的Data in Application to
. 這會導致不需要的依賴架構。
所以我想要的是在這里使用圖書館的最佳方式。
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddDbContextPool<ApplicationDBContext>(options =>options.UseLazyLoadingProxies().UseSqlServer(Configuration.GetConnectionString("amcConn")));
services.AddIdentity<ApplicationUser, IdentityRole>().AddEntityFrameworkStores<ApplicationDBContext>()
.AddDefaultTokenProviders();
services.AddSession();
services.AddSingleton<IConfiguration>(Configuration);
services.AddMvc(options=> {
var policy = new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build();
options.Filters.Add(new AuthorizeFilter(policy));
}).AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver()).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
誰能建議我如何管理?
您所描述的是間接(傳遞)依賴項,而不是循環依賴項。 取決於核心(模型)層,對於多層來說,這是很常見的。
讓業務依賴於數據並不那么干凈,但也不是真正的問題或循環。 如果您想更好地解決這個問題,請創建一個由業務和應用程序使用並由數據實現的 IStorage 接口。 IStorage self 則屬於ring1 或ring2 層。
當您以 Onion 架構方式描繪這些層時,它會更有意義。 外圈取決於內圈。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.