将大型且动态变化的数据集加载到表中



我有一大组数据,偶尔可能会在后台更新。作为一个自学实验,我不希望依赖任何框架。现在,我正在尝试在DDD/CQRS上下文中找到MVC/MVVC模式的正确位置。

为了填充表,我对大型数据集进行查询,并将结果限制为显示行数的两倍。用户滚动超过一半的查询后,我查询下一批结果。

当用户滚动时,我将所有结果加载到一个数组中,只是一个渐进式加载,而不会丢弃未显示的行。

谁负责构建转换为域对象的结果数组?MVC 的模型还是数据存储库的模型?

理想情况下,我想重用我的 MVC 模型,而不必总是担心限制查询结果。

如果在后台更新数据,则会创建系统事件。但是,在创建新行的情况下,我希望我的应用程序对新行的背景插入进行动画处理,而不仅仅是放弃查询并重新加载表。在这种情况下,我猜后台进程必须加载当前查询的副本并将其与现有查询进行比较。它应该创建一个包含新行位置的"新行系统事件"。

哪个组件应将当前查询结果与以前的查询结果进行比较,以便计算插入点和删除点?系统服务?MVC 模型?

我最后关心的是,如果数据在后台更新,加载一组具有多个有限查询的行可能会不一致。我应该如何/在哪里强制实施这种一致性?

CQRS 和 DDD = 一个域模型和至少一个查询模型。现在,为了你自己好,不要把DDD看作是许多规则的东西,这些规则被打破将使你成为DDD公敌No1。

让我们考虑一下:更新域对象并发布域事件后,您将拥有一个将更新查询模型的事件处理程序。哪个查询模型正是 UI(视图模型)所需的查询模型。

客户端 UI 应每隔一段时间请求更新(传递当前模型日期时间戳)。哪些更新也是查询模型的一部分。为了检测更改的内容,更新应该有一个日期时间戳,该时间戳将与当前显示的时间戳进行比较。如果它是一个Web应用程序,那么我强烈建议使用像 angularjs.org 这样的js框架

现在,此方案中的 MVC 模型是查询存储库。插入/编辑行时,模型将是将更新域的服务(或命令处理程序)。与域更改和查询模型生成相关的所有内容都在 UI 之外,作为服务/应用程序(随心所欲地称呼它)层的一部分。

最新更新