ASP.NET 5/ASP.NET Core中的关注点和n层架构的分离1
我正在努力寻找一种优雅的方式来保持我的DAL层与ASP.NET 5中的MVC / UI层分离,这得益于我要使用的新内置的依赖注入。
例如,我有一个ASP.NET 5项目,一个业务层项目和一个数据访问项目,我有各种实体框架代码,如实体和上下文。在ASP.NET 5中,获取上下文设置和定位数据库主要文档建议我在我的StartUp.cs类中做这样的事情 services.AddEntityFramework() .AddSqlServer() .AddDbContext<BookContext>(options => { options.UseSqlServer(Configuration.Get("Data:ConnectionString")); }); 这意味着我现在必须参考我的DAL,基本上我的UI层,根据各种专家和博客文章,这几年一直是不好的做法。 解决这个问题的一个方法是创建两个新的项目,一个是一个CompositeRoot项目,它包含工厂类,用于生成我的业务类,然后访问DAL,还有一个使用Configuration类的Utilities项目,其中有一个ConnectionString属性,可以传入我的上下文,然后使用内置的DI来连接所有东西,并避免在我的UI层中引用我的DAL。但是,我遇到了最新版本的Entity Framework(beta 7)的问题,因为它现在似乎无法在上下文的构造函数或可重写的OnConfiguration方法中指定连接字符串。此外,到目前为止,所有文件似乎都不关心这一点的混合。这是我们现在做的事情吗?相信开发人员不会直接在UI中做“参考”DAL类的“坏”事情?还是有一种模式,人们正在使用这种新的内置的DI /配置为ASP.NET 5保持SOLID? 解决方法
如果您要求10位民间建筑师为您建立桥梁,那么您最终将拥有10个不同的架构。没有人会是一样的,没有人会比另一个更好。
无论他们应用多少最佳做法和设计模式,每位建筑师都将为自己的想法辩护。有些会过热,而其他人会保持简单,完成工作。除此之外,预算,交货日期和工艺将直接影响您决定的建筑类型。 同样的规则适用于软件架构师。 我看到我在世界上有最好意图的建筑师的公平份额才意识到UI层对DAL有依赖性。也许这背后的原因是: 他们没有想过 回到MVC 5,我有以下几层: -Contoso.Core (Class Library) -Contoso.Data (Class Library) -Contoso.Service (Class Library) -Contoso.Web (asp.net MVC 5) -Contoso.Web.Configuration (Class Library) Web.Configuration层对Core,Data和Service有依赖关系。这个层是我配置我的DI东西的地方。 Web层没有依赖于数据层,而是开始使用,我正在使用Bootstrapper Nuget Package。 也许你可以实现与ASP.NET 5类似的东西 我喜欢微软(或任何人)创建一个更加面向企业级样本的工作项目模板,使用解耦方法,甚至像洋葱建筑样本。 最后,无论我认为像一个合理的解耦架构,对一些人来说可能太多了,而对别人来说还不够 随时分享您的发现,因为我很想知道您如何设法使其发挥作用。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ext JS之文件
- ASP.NET页面之间传值的方式之Application实例详解
- 如何以编程方式单击ASP.NET网页上的按钮?
- asp.net-mvc – 如何在SQL Server中为Asp.Net MVC 4应用程序
- asp.net-mvc – ASP.NET MVC中的动态(运行时生成)表单
- .net – HttpContext.Request和Request之间的区别
- asp.net-mvc – 在哪里可以找到一个简单的简单解释MVC?
- asp.net-mvc – SSL握手问题? (当时:网页挂起,只清除浏览
- 我可能正在开发一个ASP.NET应用程序. Java / PHP开发人员在
- 具有Entity Framework Code Only和ASP.NET MVC的模块化应用
- asp-classic – ConnectionTimeout无效
- 显示在文本框,标签后面的菜单. ASP.NET/C#
- 模型视图控制器 – 如何在自定义MembershipProvi
- asp.net-mvc – ASP.NET MVC流畅的nNibernate,Io
- asp.net-mvc – 无法获得有效的Unity Session Li
- asp.net-mvc – 多个模型和Breeze上下文的元数据
- asp.net-mvc-4 – 从ASP.NET MVC Action调用Conf
- asp.net-mvc – 无论如何让mvc框架验证我的actio
- ASP.NET自定义用户控件动态添加
- ASP.NET:将DataTable呈现到字符串(HTML)的最短方