cqrs相关内容

架构:简单的 CQS

我正在考虑为我的 ASP.NET MVC 网站应用 CQS,但这是一件非常简单的事情.我不是指 CQRS,因为我想对查询和命令部分使用相同的数据源,所以我不需要事件溯源和其他更复杂的模式. 所以,我的想法是: 查询和命令部分使用同一个数据库 对于查询部分,通过实体框架和WCF数据服务暴露数据库视图,让具体的视图返回给客户端,查询数据变得非常容易 对于命令部分,使用实体框架和单向WC ..
发布时间:2022-01-23 08:36:29 C#/.NET

为什么要分别表示命令和事件?

强调事件的架构中的命令和事件有什么区别?我能看到的唯一区别是命令通常是由系统外部的参与者获取/调用的,而事件似乎是由系统中的处理程序和其他代码获取的.但是,在我见过的许多示例应用程序中,它们具有不同(但功能相似)的接口. 解决方案 命令可以被拒绝. 事件发生了. 这可能是最重要的原因.在事件驱动架构中,毫无疑问,引发的事件代表了已经发生的事情. 现在,因为命令是我们想要发 ..
发布时间:2022-01-23 08:23:09 其他开发

CQRS 示例和截屏视频

我正在寻找一些带有一组合理单元测试的深入的端到端 CQRS 示例. 另外,如果有人也知道一些 CQRS 截屏视频,那将非常方便. 这些例子我已经知道了 CQRS 信息 超级简单CQRS 解决方案 这里有一个实现 MarkNijhof. 但在阅读了 CQRS 信息网站上的文档后,我最喜欢的资源是 Think Before Coding 查看帖子标签.(http:// ..
发布时间:2022-01-16 19:48:25 C#/.NET

CQRS:存储事件并发布它们 - 我如何以安全的方式执行此操作?

正如我在 为什么是 CQRS 存储库发布事件,而不是事件存储? 发布事件是 CQRS 存储库的任务.到目前为止,一切都很好. 当然,存储和发布事件应该在一个事务中进行.从技术上讲,这意味着将一个(或多个)记录写入存储,并将一个(或多个)事件发布到消息总线.因此,一个简单的数据库事务是不够的,它应该是一个分布式的. 现在,不幸的是,许多 NoSQL 数据库(例如 MongoDB)不支持符 ..
发布时间:2022-01-06 20:32:48 其他开发

重构代码以避免反模式

我有一个包含以下代码的 BusinessLayer 项目.域对象是 FixedBankAccount(它实现了 IBankAccount). 存储库是作为域对象的公共属性制作的,并作为接口成员制作.如何重构它以使存储库不会成为接口成员? 域对象 (FixedBankAccount) 直接使用存储库来存储数据.这是否违反了单一职责原则?如何纠正? 注意:存储库模式是使用 LINQ ..
发布时间:2021-12-22 08:44:07 C#/.NET

如何在 CQRS 中处理基于集合的一致性验证?

我有一个相当简单的域模型,其中包含一个 Facility 聚合根列表.鉴于我使用 CQRS 和事件总线来处理从域引发的事件,您如何处理集的验证?例如,假设我有以下要求: 设施的名称必须是唯一的. 由于我在查询端使用最终一致的数据库,因此无法保证其中的数据在事件处理器或处理事件时准确无误. 例如,FacilityCreatedEvent 在查询数据库事件处理队列中等待处理并写入数据 ..

在 AppEngine 上实现 CQRS 的端到端示例

实现基于 CQRS 的应用程序所需的所有基础结构组件似乎在 AppEngine 中都是开箱即用的. 很遗憾,我找不到与此主题相关的任何内容. 几个可能的原因 这是一个超越“建筑宇航员"的秘密 这是一个毫无价值的过度架构,因为 AppEngine 是“按设计"横向扩展的 它还不是主流 但是,即使没有完整的代码可用,只要有人有关于 AppEngine 之上的 CQRS 的提 ..
发布时间:2021-11-17 02:54:42 其他开发

微服务创建实体实现

这是我在此处概述的问题的后续问题. 网关充当应用程序的入口点,客户端的每个请求都会发送到该入口点.然后网关将请求分配给负责的微服务并处理身份验证. 在这种情况下,网关侦听 HTTP POST/bok 并通知 微服务 A 创建一本书.因此,Microservice A 负责管理和存储有关图书实体的所有内容. 以下伪代码是该架构的简化实现: 队列通信 网关 router ..
发布时间:2021-11-17 02:49:29 其他开发

CQRS/事件溯源项目结构

我有我的第一个使用事件溯源的 CQRS 项目,我想知道与其他涉及多层的项目相比,这种类型的项目是否应该在 Visual Studio 中以不同的方式构建? 例如,在过去创建的项目中,有一些层,例如远程处理、应用服务、域等,很明显每个层/程序集都触及了它下面的层.这些程序集似乎做了很多事情,使用像 NDepend 这样的工具确实说明了项目的结构. 但是,对于 CQRS 项目,是否最好只拥 ..
发布时间:2021-11-17 02:40:58 其他开发

从 CQRS 中写入端的数据库读取数据

背景: 解释 CQRS 的图表通常会清楚地分离读写路径和单向数据流,就像在这个例子中一样(来源:Demystified CQRS) : 问题: 我想澄清一下, 如果后端执行命令需要从数据库中获取一些数据, “写入端"是否应该有一些从写入数据库读取的能力? 还是应该完全依赖“读取端"进行任何读取? 或者命令应该包含调用者提供的所有需要​​的数据来完成? 解决方 ..
发布时间:2021-11-17 02:30:24 其他开发

CQRS:查询端的业务逻辑

遵循 CQRS(命令查询职责分离)的概念,我在我的 MVC 应用程序中直接引用 DAL,并通过 ViewModel 进行所有读取.然而,我的一位同事问我,当阅读时必须应用任何业务逻辑时,你会怎么做.例如如果您需要在如下场景中计算百分比值: //Employee 域对象班级员工{字符串 EmpName;单一工资;}//在某些实用程序类中声明的常量.这也可以存储在 DB 中.const 单一税 = ..

与 CQRS 的多对多关系的替代方案

我们如何使用 CQRS/DDD 为经典的多对多关系建模? 我知道 DDD 和 CQRS 的实现和解决方案往往是特定于领域的,因此可能很难对这个问题给出一个通用的答案. 但是,假设我们在 Book 和 Author 之间有熟悉的关系.这是一个经典的多对多关系. 对我来说,Book 和 Author 是两个不同的实体,每个都属于自己的聚合根,这似乎是最自然的.因此,对它们之间的多对多 ..
发布时间:2021-11-17 02:16:31 其他开发

何时使用 CQRS 设计模式?

我和我的团队一直在讨论使用 CQRS(命令查询职责分离)设计模式,我们仍在尝试评估使用它的利弊.根据:http://martinfowler.com/bliki/CQRS.html 我们在该领域还没有看到足够多的 CQRS 使用,但我们对此充满信心我们了解它的优缺点 那么你们认为什么时候出现问题需要使用 CQRS? 解决方案 CQRS 不是一个包含整个应用程序的模式. 这 ..
发布时间:2021-11-17 01:58:17 其他开发

CQRS:命令返回值

对于命令是否应该有返回值似乎有无尽的困惑.我想知道混淆是否仅仅是因为参与者没有说明他们的背景或情况. 混乱 以下是混淆的例子... Udi Dahan 说命令“不会向客户端返回错误",但是在同一篇文章中他展示了一个图表,其中命令确实将错误返回给客户. Microsoft Press Store 的一篇文章指出“该命令...不返回响应";但随后给出了一个模棱两可的警告: ..
发布时间:2021-11-17 01:57:45 其他开发

如何在 Flux 应用程序中处理嵌套的 API 响应?

我正在将一个现有的应用程序移植到 Flux,我对一个主题有点困惑.假设我有几个返回两级或三级嵌套对象的 API 端点. 例如,GET/articles 可能会返回架构的 JSON 响应 文章:文章*文章: {作者:用户,喜欢者:用户*primary_collection:收藏?收藏:收藏*}收藏: {策展人:用户} 如您所见,有各种不同级别的用户: articles[i].auth ..
发布时间:2021-11-17 01:55:54 其他开发

在控制器之外使用 ModelState

我正在努力将 PATCH 端点中的 API 逻辑移至 Mediatr 命令.在应用我的补丁文件时,我通常会检查模型状态,如下所示.通常,我是从控制器执行此操作,因此没有问题,但是当将其移动到 RequestHandler 时,由于我在控制器之外,因此无法再访问模型状态属性. 您建议如何处理这个问题? 这是我想在控制器之外使用的模型状态逻辑: updatePartialValueToR ..
发布时间:2021-11-15 04:43:11 C#/.NET

在 ServiceStack 中动态创建操作和服务

我正在处理一个 ServiceStack 项目,该项目需要我收集一个命令列表,其中我有 200 多个命令,并为每个命令创建一个操作和服务.本质上,我正在制作一个命令 API,它允许用户在不使用 UI(暴露我的命令)的情况下发送命令. 我正在尝试做的一个简单的例子:(应用启动) 收集所有命令(有一些例外)对于每个命令为该命令进行操作和服务将命令属性映射到新的操作和服务 我遇到的问题是操作和 ..
发布时间:2021-11-15 03:14:01 C#/.NET