簡體   English   中英

如何在 ASP.NET CORE 中刪除多層的循環依賴

[英]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 toData 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.

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