我正在将旧版 Web 窗体应用程序扩展/转换为全新的 MVC 应用程序。扩展既是技术方面的,也是业务用例方面的。遗留应用程序是一个完善的数据库驱动设计 (DBDD)。因此,例如,如果您有不同类型的员工,如操作员、主管、商店管理员等,并且您需要添加一个新类型,您只需在几个表中添加一些行,瞧,您的 UI 会自动添加所有内容/更新新类型的员工。然而,层的分离不是那么好。
新项目有两个主要目标
- 可扩展性(针对当前和未来的管道要求)
- 表现
我打算创建一个新项目,用域驱动设计 (DDD) 替换数据库驱动设计 (DBDD),同时牢记可扩展性要求。然而,如果我将它与传统 DBDD 应用程序的性能进行比较,从数据库驱动设计转向领域驱动设计似乎会对性能要求产生负面影响。在遗留应用程序中,任何来自 UI 的数据调用都将直接与数据库交互,并且任何数据都将以 DataReader 或(在某些情况下)DataSet 的形式返回。
现在有了严格的 DDD,任何数据调用都将通过业务层和数据访问层进行路由。这意味着每次调用都会初始化一个业务对象和一个数据访问对象。单个 UI 页面可能需要不同类型的数据,这是一个 Web 应用程序,每个页面都可以由多个用户请求。此外,一个 MVC Web 应用程序是无状态的,每个请求都需要每次都初始化业务对象和数据访问对象。因此,对于 MVC 无状态应用程序而言,DBDD 似乎比 DDD 性能更可取。
或者在 DDD 中有一种方法可以同时实现 DDD 提供的可扩展性和 DBDD 提供的性能?