gpt4 book ai didi

model-view-controller - 新的web项目设计模式规范

转载 作者:行者123 更新时间:2023-12-05 04:28:36 26 4
gpt4 key购买 nike

我有一个包含 50 多个表的关系数据库。他们有不止一种关系,一对一,不止一种。

在我将基于此数据库创建的新 MVC 项目中,代码优先还是数据库优先更有效?

按照最佳实践逻辑,在这么大(总共 20 亿+ 数据)的地方首选哪个?

问候..

最佳答案

在我看来,代码优先通常应该是更好的情况,因为您主要是为应用程序而不是数据构建软件。“代码优先”意味着关注你的问题领域和领域模型。访问数据库是持久化应用程序状态的实现细节,不应在软件设计的早期阶段提及。

领域驱动设计和整洁架构中可以找到类似的概念。


在您的情况下,虽然数据已经存在于数据库中,但主要问题仍然是:您的新项目是做什么用的?

案例一:如果只是为了读取数据,比如presentation,那你可以考虑把数据库中的数据作为你的数据模型;这可能符合“数据库优先”的概念。但是,由于数据模型是您问题的模型,我仍然会首先将其视为代码。

案例二:另一方面,如果有一些特定的要求,您绝对应该首先构建您的领域模型,以专注于您的应用程序的要求和问题,而不是数据库。否则,您可能会发现您的应用程序被数据库模式卡住,导致应用程序逻辑复杂,具体取决于您的问题域和数据之间的差异程度,因为您的应用程序关注的不是问题而是数据。为了访问数据库,您可能正在寻找的是 Data Mapper pattern .除此之外,您还可以实现 Repository Pattern ,它将专为您的领域模型中的实体而设计。


对于你提到的效率问题:
假设你是前面提到的案例2。在这种情况下,您可以查看command query responsibility segregation(CQRS)。 ,它将查询(读取数据的操作)与命令(更改系统状态的操作)隔离开来。将读取/写入系统的责任分开可以提高应用程序中的演示效率。


总而言之,如果您没有实现只读应用程序,就没有数据库驱动的设计。

关于model-view-controller - 新的web项目设计模式规范,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72559623/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com