asp.net-mvc – 针对MVC Web应用程序的域驱动设计与数据库驱动设计

我正在将旧的Web窗体应用程序扩展/转换为全新的MVC应用程序.扩展既包括技术也包括业务用例.遗留应用程序是一个做得很好的数据库驱动设计(DBDD).所以对于例如如果您有不同类型的员工,如运算符,主管,商店管理员等,并且您需要添加新类型,您只需在几个表中添加一些行,瞧,您的UI自动拥有添加/更新新内容的所有内容员工类型.
然而,层的分离并不是那么好.

新项目有两个主要目标

>可扩展性(适用于当前和未来的管道要求)
>表现

我打算使用域驱动设计(DDD)创建替换数据库驱动设计(DBDD)的新项目,同时牢记可扩展性要求.但是,如果将其与传统DBDD应用程序的性能进行比较,从数据库驱动设计迁移到域驱动设计似乎会对性能要求产生相反的影响.在遗留应用程序中,来自UI的任何数据调用都将直接与数据库交互,并且任何数据都将以DataReader或(在某些情况下)DataSet的形式返回.

现在有了严格的DDD,任何数据调用都将通过业务层和数据访问层进行路由.这意味着每次调用都会初始化业务对象和数据访问对象.单个UI页面可能需要不同类型的数据,这是一个Web应用程序,每个页面都可以由多个用户请求. MVC Web应用程序也是无状态的,每个请求都需要每次都初始化业务对象和数据访问对象.
因此,对于MVC无状态应用程序而言,DBDD更倾向于DDD以提高性能.

或者在DDD中有一种方法可以实现DDD提供的可扩展性和DBDD提供的性能?

解决方法

您是否考虑过某种形式的命令查询分离,其中更新是通过域模型进行的,而读取来自DataReaders?全面的DDD并不总是合适的.

相关文章

引言 本文从Linux小白的视角, 在CentOS 7.x服务器上搭建一个...
引言: 多线程编程/异步编程非常复杂,有很多概念和工具需要...
一. 宏观概念 ASP.NET Core Middleware是在应用程序处理管道...
背景 在.Net和C#中运行异步代码相当简单,因为我们有时候需要...
HTTP基本认证 在HTTP中,HTTP基本认证(Basic Authenticatio...
1.Linq 执行多列排序 OrderBy的意义是按照指定顺序排序,连续...