首页 文章
  • 7 votes
     answers
     views

    CQRS存储库/事件发布者

    我正在使用CqrsLite进行CQRS式项目 . 具体Repository实现的Save方法如此(省略了不相关的行) . public void Save<T>(T aggregate, int? expectedVersion = null) where T : AggregateRoot { if (expectedVersion != null &...
  • 5 votes
     answers
     views

    在CQRS(命令处理程序或域事件处理程序)中保存域以写入数据库的最佳位置

    我正在研究CQRS,我看到了一些源代码(Greg Young的SimpleCQRS和Mark Nihjof的) . 我仍然对命令和域事件感到困惑 . 我们是否始终需要在域事件处理程序中将域保持为“写入数据库”?如果我调用代码将域保存到命令处理程序中的数据库(通常通过域存储库),然后让域事件处理程序处理其他东西(例如:更新读取模型和执行其他服务,如电子邮件通知),这是很常见的 . 谢谢 .
  • 2 votes
     answers
     views

    DDD / CQRS:在哪里坚持

    我们最近开始使用DDD和CQRS(无事件采购)的概念开发应用程序 . 我仍然有点困惑,因为在哪里调用存储库来保持我的聚合根 . 我是在命令处理程序中执行此操作还是在事件处理程序中执行此操作?
  • 8 votes
     answers
     views

    从CQRS访问Web服务

    假设我有一个基于CQRS的系统,我的域需要来自外部Web服务的一些数据来做出决定 . 我该如何正确建模? 我可以想到两个选择: 命令处理程序运行域逻辑,域本身调用Web服务 . 一旦获得响应,它就会将适当的事件附加到当前聚合并存储它们 . 该域基本上“等待”Web服务返回 . 命令处理程序运行域逻辑,域立即发出域内部更多数据所需事件 . 进程管理器对此作出反应,与Web服务进行通信,对结果...
  • 4 votes
     answers
     views

    CQRS中写入侧DDD中的时间序列/时间数据

    我无法理解如何支持DDD中的时间序列/时间数据以及如何使用CQRS在写入端处理它 . 最终,我想找到一个与事件采购相关的解决方案 . 以温度预报为例,温度变化也会影响区域/位置的预测能量需求 . 假设温度预测可以进入未来(基于历史数据),将所有预测加载到 Location 聚合中我认为如果不对加载的数据量施加一些限制将是不切实际的 . What is a good/recommended appr...
  • 3 votes
     answers
     views

    需要DB调用的CQRS命令验证

    在CQRS中,验证需要数据库调用的命令的最佳方法是什么?例如,我有 Order 聚合验证命令 CommitOrder 并且除非有足够的库存,否则我不想接受此命令 . 在这种情况下,命令处理程序如何检查我是否有订单商品的库存或没有?我可以从写入端查询读取端吗? 注意:我正在使用akka来实现
  • 2 votes
     answers
     views

    在CQRS ES系统中存储和更新读取模型

    Background 我有一个使用CQRS ES的系统,在这个系统中有一些聚合,例如博客文章或事件存储中存在的问题,并将事件发送到查询端以通过投影保持读取模型 . In the case of a an issue or post being created it is a fairly straight forward 客户端创建一个命令来创建新问题 命令处理程序创建新的问题聚合并将更改...
  • 0 votes
     answers
     views

    CQRS /事件采购 - 瞬态事件

    在开发我的应用程序期间,我发现我需要发出一些实际上不会修改聚合状态的事件,但是为了更新读取模型(瞬态事件?)需要它们 . 例如如果在我的代码(域模型)中,我在层中保持数字层次结构的状态,如: 1 4 7 5 8 3 9 并且读取模型正在进行事件的投影,例如(从左到右的顶部数字): 1 5 3 然后,当我在聚合根 RemovedNumber(1) 中触发事件时,...
  • 1 votes
     answers
     views

    CQRS实施细节

    我正在使用CQRS和Event-Sourcing实施微服务 . 我已经看到了CQRS的不同实现,这些实现非常复杂 . 我已经理解和实现的是我已经为Read(Query)和Write(Command)创建了两个模型,read模型有一个物化视图,而write模型使用了Database,现在每当发生更新时,write模型都会更新数据库并生成一个事件,并将详细信息记录到读取模型已订阅的事件存储中,并且读取...
  • 5 votes
     answers
     views

    CQRS如何为更具伸缩性的应用程序做出贡献

    最近我一直在阅读CQRS架构 . 关于为什么应该使用CQRS的最重要的一点是可扩展性 . 现在我不太明白这是如何工作的 . 假设您拥有 typical CQRS应用程序设计 . 两个数据存储区 一个用于命令端 一个用于查询端 处理完命令后,会发送一个事件,可以更新第二个数据存储区 经常声明,拥有一个用于查询的数据存储区和一个用于处理命令的数据存储区将使您的应用程序更具可伸缩性...
  • 1 votes
     answers
     views

    触发其他事件的事件 - 实际上在阿卡的传奇/过程管理者

    我正在构建一个使用Akka持久性的CQRS驱动系统作为辅助项目和学习练习 . 我正在寻找一些关于我如何建模的帮助 . 总之,我有一个游戏 . 纯粹的游戏机制是一个FSM(我实际上是使用PersistentFSM对此进行建模)并且我已经读取了这个持久化actor的视图,前端客户端API查询确定在客户端呈现什么 . 这很好用 . 游戏是基于单词的游戏 . 简而言之,你可以想象游戏中的每个玩家提交一些句...
  • 28 votes
     answers
     views

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

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

    使用CQRS和事件源时的唯一性验证

    我正在尝试使用Event Sourcing实现我自己的CQRS基础架构,以便更好地学习它 . 作为一个示例项目,我正在实现一个博客引擎,我知道它可能不是一个完美的契合,但我只想做一些真实的事情 . 我现在遇到的问题是验证 . 每个帖子都有 shortUrl , shortUrl 应该是唯一的,但我应该在哪里将此验证放在域中?我知道在我通过读取读取存储来发送命令之前我将进行验证,以便在创建creat...
  • 1 votes
     answers
     views

    在CQRS中验证与其他域相关的命令

    我正在学习使用DDD,CQRS和ES开发微服务 . 它是HTTP RESTful服务 . 微服务是关于网上商店 . 有几个领域,如产品,订单,供应商,客户等 . 这些域构建在单独的服务中 . 如果命令有效负载与其他域相关,如何进行验证? 例如,这是订单服务(命令端)中的addOrderItemCommand有效负载 . { "customerId": "CUST111...
  • 0 votes
     answers
     views

    微服务共享域层

    我对微服务架构有疑问 . 我们正在开发ERP,并且有一些微服务,例如人力资源,身份,订单等 . 我们为所有这些层共有的实体实现了共享域层,包括Company,Location和一些值对象的抽象(接口) . 我的问题是:微服务共享项的边界是什么,有多糟糕? 在这种情况下,每个微服务的那些共享实体都是相同的,这样可以帮助我们编写更少的代码,同时创建一个小的耦合级别 .
  • 3 votes
     answers
     views

    Lagom或微服务中的异步流程设计

    如何在Lagom设计asyn流量? 面临的问题:在我们的产品中,我们有一个Lead Aggregate,它有一个用户ID(代表潜在客户的所有者),现在用户有一个限制,即一个用户最多可以有10个与之相关的潜在客户 . 我们通过创建单独的Service ResourceManagement来设计它,当用户请求挑选潜在客户时,我们向LeadAggregate发送一个命令,生成事件LeadPickRequ...
  • 9 votes
     answers
     views

    kafka中每个Aggregate Root事件的单个或多个主题(流)

    我的 Order 聚合根能够发出几个 Event ,例如 OrderCreated , OrderPaid , OrderCancelled . 将所有类型的订单事件存储到单个kafka主题中并将 orderId 作为消息密钥是否是一个好的设计,如here?或者我应该为每个人创建一个sepparate主题? 拥有单一主题的专家是维持事件的顺序,但消费者需要在他们的结尾过滤一些事件 . 第二种方法...
  • 3 votes
     answers
     views

    洋葱架构我们应该将域模型注入表示层吗?

    我正在尝试为ASP.Net MVC 5项目实现Onion架构 . 我已经看到了服务应该被注入而不是实例化的意见,即使纠正我,如果我错了,Jeffery Palermo(http://jeffreypalermo.com/blog/the-onion-architecture-part-3/)表达的想法是任何外层应该能够直接调用任何内层 . 所以我的问题是 洋葱建筑能否在没有IOC的情况下工作,...
  • 22 votes
     answers
     views

    洋葱建筑

    我正在为即将到来的内部应用程序设置一个项目结构,该应用程序试验了Palermo提出的Onion Architecture(http://jeffreypalermo.com/blog/the-onion-architecture-part-3/) . 我遵循他的指导方针,但到目前为止我需要对项目结构进行一些验证 . 在图表之前,问题: 我认为参考文献都是正确的(根据图表设置箭头表示'引用'),...
  • 0 votes
     answers
     views

    如何映射此模型

    TimeSheetActivity类有一个Allocations集合 . 分配是一个值对象(不可变),看起来像这样: public class Allocation : ValueObject { public virtual StaffMember StaffMember { get; private set; } public virtual TimeSheetActivity...
  • 6 votes
     answers
     views

    symfony域事件

    我正在尝试在我的Symfony2项目中实现域驱动设计并遇到一些问题 . 在阅读了一些关于Domain Models的文章后,我发现了 我应该将所有业务逻辑放入我的域模型(实体)中 . 需要完成并且不属于域逻辑的应用程序级别的东西会被域事件触发(发送电子邮件,将一些消息放入队列等) 幸运的是,Symfony提供了活动,但这是一个问题 - 我不能从我的实体提出事件 . Symfony文档...
  • 9 votes
     answers
     views

    在DDD中,谁应该负责处理域事件?

    谁应该负责处理域名事件?应用服务,域服务或实体本身? 让我们用这个问题的简单例子 . 假设我们在商店应用程序上工作,我们有一个专门用于订单操作的应用程序服务 . 在此应用程序中 Order 是聚合根和遵循规则,我们只能在单个事务中使用一个聚合 . 下订单后,它将保留在数据库中 . 但还有更多工作要做 . 首先,我们需要更改清单中可用的项目数量,然后通知系统的其他部分(可能是另一个有界的上下文),应...
  • 1 votes
     answers
     views

    使用供应商事件调度程序时如何在域上下文中使用依赖项

    我正在考虑将DDD用于示例应用程序,现在我仍然坚持使用域事件 . 由于那里有非常好的EventDispatcher,我不想重新发明轮子 . 但是这些实现都要求我的事件正在实现它们的EventInterface . 我想保持我的域事件的实现与任何类型的实现分开 . 我该如何处理这个问题?
  • 2 votes
     answers
     views

    CQRS - 读取端的事件重放

    我已经阅读了几个关于CQRS的博客,并且所有这些博客都解释说,在写入端事件持久存储在事件存储中,并且在请求时,事件被检索并在聚合上重放 . 我的问题是为什么读取端不需要在聚合上重放事件?
  • 0 votes
     answers
     views

    如何通过事件采购和CQRS处理预测错误?

    我想使用事件源和CQRS,所以我需要预测(我希望我使用正确的术语)来更新我的查询数据库 . 我该如何处理数据库错误? 例如,我的一个查询缓存数据库不可用,但我已经更新了其他数据库 . 因此,当它恢复业务时,不可用的数据库将不会与其他数据库紧密相连 . 它如何知道它必须运行例如来自事件存储的最后10个域事件?我想我必须存储有关数据库当前状态的信息,但是如果该数据库状态存储失败怎么办?任何想法,最佳实...
  • 3 votes
     answers
     views

    通过多个聚合重建来自域事件的查询

    我正在使用DDD / CQRS / ES方法,我有一些关于建模我的聚合和查询的问题 . 作为示例,请考虑以下情形: 用户可以创建WorkItem,更改其 Headers 并将其他用户与其关联 . WorkItem具有参与者(关联用户),参与者可以向WorkItem添加动作 . 参与者可以执行操作 . 我们假设用户已经创建,我只需要userIds . 我有以下WorkItem命令: Creat...
  • 4 votes
     answers
     views

    没有DDD的CQRS事件采购

    我正在构建一个非常以数据为中心的系统 . 我有大型的分层数据集,但没有业务规则 . 系统的输出来自对数据和一些报告进行的一些计算 . 我需要有一个完整的审计跟踪(出于监管原因),并能够从过去的任何一点对数据集运行计算 . 出于这些原因,我认为使用CQRS的事件源系统是可行的方法 . 我见过的所有例子都围绕创建聚合来做ES . 我遇到的问题是因为每个数据都是一个大的相关集合,我会有少量的大量聚合 ....
  • 4 votes
     answers
     views

    事件采购/ CQRS阅读模型 - 预测

    我在AWS Lambda上运行了一个基于微服务的应用程序 . 其中两个微服务,最关键的微服务,使用事件源/ cqrs . Background: (this is also for me to organize my thoughts) 我正在使用this library并在DynamoDB中存储事件并在AWS S3中进行投影 . 写入部分就像一个魅力:每个命令调用从DynamoDB加载聚合的当前...
  • 2 votes
     answers
     views

    CQRS(事件采购)读取多个聚合

    我有2个聚合,有一对多关系 . 例如,我有一个问题列表,我想将其中的一些添加到questonaires,其中一些是强制性的,必须添加到所有问卷中,其中一些不是,并且问卷的创建者选择它们 . 假设我正在使用事件采购和CQRS . 我创建问题列表,我想将问题添加到问卷中 . 通常我会这样做 questionaire.AssignQuestions(questions.Where(q => q.i...
  • 2 votes
     answers
     views

    如何将Expression <Func <DomainType >>谓词转换为Expression <Func <DTOtype>谓词

    一些背景:我在我的应用程序中有多个层,其中两个是域层和基础结构层,用作我的DAL . 在域层中,我实现了一个通用的存储库模式: public interface IRepository&lt;T, in TId&gt; where T : IEntity&lt;TId&gt; { void Insert(T entity); void Delete(T en...

热门问题