与旧系统的 CQRS

2023-12-24

我希望将一个具有清晰域模型的相对较新的基于 Web 的应用程序转换为更多 CQRS 风格的系统。我的新应用程序本质上是对现有旧系统的增强替代。

我的组织中的现有系统共享一组通用数据库,这些数据库由整个公司孤岛中存在的无数应用程序(通过混沌方法开发)进行更新。 (就目前情况而言,我相信公司里没有一个人能够识别出他们的全部身份。)

因此,我的问题是关于我的应用程序的读取模型。由于各种状态更改、一般用户数据等是由我无法控制的其他应用程序更新的,那么以我可以处理外部更新的方式构建读取模型的最佳方法是什么,但仍然保持事情相对简单?

到目前为止我已经考虑过以下几点:

  1. 在数据库中为读取模型创建视图,读取所有表(旧表和新表)
  2. 向现有表添加触发器以更新新的读取模型表
  3. 向数据库添加一些代码(CLR Stored proc/etc [sql server])以更新读取模型的外部数据存储
  4. 放弃希望

对于如何解决这个问题,普遍的共识是什么?认为我可以在不从头开始完全重写所有内容的情况下为遗留系统带来秩序是愚蠢的吗?


我已经成功地使用了选项#1。创建视图来降低数据的士气以创建读取模型是一个可行的选择,具体取决于写入数据库的复杂性。意思是,如果大多数开发人员都可以理解它是相对简单的连接,那么我会仔细看看它是否适合您。我会小心这些视图中的过于复杂的内容。

另一件需要考虑的事情是定期轮询来构建和更新,类似于传统的报告数据库。尽管与通知相比不是最佳选择,但取决于您的读取模型的陈旧程度,这也可能是一个值得考虑的选项。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

与旧系统的 CQRS 的相关文章

  • 【转载】DDD中的 CQRS模式

    转载自 xff1a DDD 中的那些模式 CQRS 知乎 DDD 作为一种系统分析的方法论 xff0c 最大的问题是如何在项目中实践 而在实践过程中必然会面临许多的问题 xff0c 模式 是系统架构领域中一种常见的手段 xff0c 能够帮助
  • 如何在 Eclipse 中访问内部 Java 包?

    我有一个使用 Java 11 或 Java 10 在 Eclipse 中打开的旧 Java 8 项目 Eclipse 现在正确地抱怨无法访问的包 例如 com apple laf AquaComboBoxUI 从命令行编译时 我可以通过添加
  • Akka 持久化查询事件流和 CQRS

    我正在尝试在我的 ES CQRS 架构中实现读取端 假设我有一个这样执着的演员 object UserWrite sealed trait UserEvent sealed trait State case object Uninitial
  • 将旧版 VB6 函数调用转换为 .NET 的实用程序 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我正在寻找一个实用程序 工
  • 套接字输入和输出的单独线程

    我被分配去解决多线程 java 服务器的一些性能和随机崩溃问题 尽管线程和线程安全对我来说并不是真正的新主题 但我发现设计一个新的多线程应用程序可能比尝试调整一些遗留代码困难一半 我浏览了一些著名的书籍来寻找答案 但奇怪的是 只要我阅读并分
  • 微服务创建实体实现

    这是我概述的问题的后续问题here https stackoverflow com q 56622485 8586803 网关充当应用程序的入口点 来自客户端的每个请求都会发送到该应用程序 然后 网关将请求分配给负责的微服务 并处理身份验证
  • Mediatr - 无效/更新缓存的正确位置在哪里

    这个问题源于我问过太多接口 QCRS 和 Mediatr 库 请求 响应 的另一个问题 Mediatr 减少 DI 对象的数量 https stackoverflow com questions 53966361 mediatr reduc
  • 命令中的 CQRS 代码重复

    我有一个关于 CQRS 原则的命令端代码重复的问题 一直在关注以下文章 https www cuttingedge it blogs steven pivot entry php id 91 https www cuttingedge it
  • 事件溯源基础设施实施

    我在我的应用程序中实现了事件源和 CQRS 模式 我的灵感来自于CQRS 旅程 https msdn microsoft com en us library jj554200 aspx我在哪里下载了示例代码 在那里 我找到了事件源的完整基础
  • 将 cout 和 stdout 重定向到 C++ 中的字符串以进行单元测试

    我正在努力在单元测试下获取一些遗留代码 有时感知现有程序行为的唯一方法是从控制台输出 我在网上看到很多关于如何将 stdout 重定向到 C 中的另一个文件的示例 但是有没有办法可以将其重定向到内存中的流 以便我的测试不必依赖于磁盘 我希望
  • 清理遗留代码“header spaghetti”

    任何清理 标题意大利面 的推荐做法 这会导致极其严重的后果 编译时间慢 Linux Unix GCC 中是否有相当于 pragma Once 的东西 发现与此相关的冲突消息 Thanks 假设您熟悉 包含防护 ifdef 在标头开头 加快构
  • 如何在多线程环境中使用旧的单线程 C++ 库

    我有一个旧的 C 库 它是为在单线程环境中使用而设计的 该库公开了用于初始化的接口 这改变了库的内部数据结构 以及仅读取数据和进行计算的用法 我的目标是在 Windows 多线程应用程序中使用这个库 不同的线程调用使用不同数据初始化的 dl
  • IRequestHandler 返回 void

    请看下面的代码 public class CreatePersonHandler IRequestHandler
  • 将 TDD 回顾性应用到 C# 代码库中的最佳选择

    我有一个由 5 个 C 库组成的现有框架 该框架自 2006 年以来一直得到很好的使用 并且是我的大多数项目的主要代码库 我的公司出于软件质量的原因希望推出TDD 在学习了许多教程并阅读了理论之后 我了解了 TDD 的好处 时间不是无限的
  • 关于使用遗留代码的建议

    我需要一些关于如何使用遗留代码的建议 不久前 我接到的任务是向报告应用程序添加一些报告 2005 年用 Struts 1 编写的 没什么大不了的 但是代码相当混乱 没有使用Action形式 基本上代码就是一个巨大的action 里面有很多i
  • CQRS - 如何对场景执行系统进行建模

    我最近开始为我即将启动的一个绿地项目研究 CQRS 和 DDD 我研究了 Udi Dahan Greg Young Mark Nijhof 等人的大量资料 这些确实非常有帮助 我想我对这些概念有了很好的理解 但是 我仍然有一些关于如何将这些
  • 我可以使用 *.tlb 文件而不使用 Regasm 在计算机上注册它吗

    我们正在支持老化的 VB6 系统 我们已在 Net 中为其编写了新代码 将代码放入程序集中 然后导出 tlb 文件以与 VB6 代码库一起使用 我的问题是 在我希望运行代码的每台计算机上 我是否必须使用 Regasm 来注册类型库 我之所以
  • 使用 CQRS 的读取端实现方法

    我已经转移到积极使用 CQRS 事件源的项目 乍一看它是按照所有这些书籍和博客来实现的 但最后我意识到实现中到底有什么问题 Here is CQRS architecture 这张照片最初是我从here http cre8ivethough
  • 遗留代码中的泛型

    我们有相当多的代码刚刚跳转到 Java 5 我们一直在那些打算在 Java 5 版本中发布的组件中使用泛型 但是剩下的代码当然充满了原始代码类型 我已将编译器设置为生成原始类型错误并开始手动清除它们 但按照目前的速度 这将需要very很长时
  • 链接到遗留库:-lgfortranbegin from a premade makefile

    我在尝试编译由一些研究人员开发的程序时遇到了一些麻烦 该程序应该以非常精确的方式计算傅立叶变换和其他一些有用的操作科学论文在这里 https www researchgate net profile Gerard Gomez2 public

随机推荐