使用 membus 和 ioc 容器的 SetHandlerInterface() 的多种类型

2024-05-24

过去此处演示 CQRS 代码 https://gist.github.com/hyrmn/3200053/raw/39ae14e4226d5e0d032690bf0e37e75286d2a1f7/EndToEndTests.cs命令和事件处理程序分别连接如下:

public interface CommandHandler<in T>
{
    void Handle(T command);
}

public interface EventHandler<in T>
{
    void Handle(T @event);
}

bus = BusSetup.StartWith<Conservative>()
       .Apply<FlexibleSubscribeAdapter>(a =>
       {
           a.ByInterface(typeof(IHandleEvent<>));
           a.ByInterface(typeof(IHandleCommand<>));
       })
       .Construct();

我正在使用一个与 membus 连接的 IoC 容器,它通过实现以下功能实现了梦想IEnumerable<object> GetAllInstances(Type desiredType)与我的容器的接口,但是与使用这种注册方法的演示不同,我无法为单独的命令和事件拆分接口:

this.Bus = BusSetup.StartWith<Conservative>()
    .Apply <IoCSupport>(c =>
        {
            c
            .SetAdapter(SimpleInjectorWiring.Instance)
            .SetHandlerInterface(typeof(CommandHandler<>))
            /*.SetHandlerInterface(typeof(EventHandler<>))*/;
            // only CommandHandler or EventHandler can be used - not both
        })
    .Construct();

谁能告诉我是否有任何解决办法,以便我们可以注册任意数量的类型?


恐怕当前版本的 MemBus 无法做到这一点 - 请注意,没有特殊原因。我知道区分事件和命令是有意义的,即使底层基础设施是相同的。

目前唯一的解决方法是使用单个接口将 IOC 连接到 MemBus。

如果应该将这样的功能引入 MemBus,则必须考虑 IOC 容器的查找机制应该是什么样子。它可能必须请求所有接口的所有处理程序,或者必须引入某种对事件和命令“消息”进行分类/区分的方法。

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

使用 membus 和 ioc 容器的 SetHandlerInterface() 的多种类型 的相关文章

  • 【转载】DDD中的 CQRS模式

    转载自 xff1a DDD 中的那些模式 CQRS 知乎 DDD 作为一种系统分析的方法论 xff0c 最大的问题是如何在项目中实践 而在实践过程中必然会面临许多的问题 xff0c 模式 是系统架构领域中一种常见的手段 xff0c 能够帮助
  • 没有使用 SimpleInjector APIv3 注册类型 ICommandHandler

    我一直在使用 SimpleInjector 并尝试正确注册所有命令处理程序 这是我的代码 CQRS cs public interface ICommand public interface ICommandDispatcher void
  • CQRS - 是否允许从写入端调用读取端?

    我开始阅读有关 CQRS 的内容 但我有点困惑 是否允许在写入端调用读取端来获取附加信息 http cqrs nu Faq command handlers http cqrs nu Faq command handlers在这里他们说这是
  • 在 CQRS 中实现基于集合的约束

    我仍在努力解决与 CQRS 风格架构相关的基本 和已解决 问题 我们如何实现依赖于的业务规则a set的聚合根 以预订应用程序为例 它可以帮助您预订音乐会门票 电影座位或餐厅餐桌 在所有情况下 只会有数量有限待售 物品 让我们想象一下该事件
  • 事件溯源命令或来自外部系统的事件?

    在大多数情况下 我了解 CQRS ES 系统中命令和事件之间的区别 然而 有一种情况我想不通 假设我正在构建一个个人财务跟踪系统 用户可以在其中输入借方 贷方 显然 这些是命令 一旦经过验证 域模型就会更新并发布事件 然而 假设信用 借记信
  • 从 CQRS 访问 Web 服务

    假设我有一个基于 CQRS 的系统 并且我的域需要来自外部 Web 服务的一些数据来做出决策 我如何正确建模 我可以想到两个选择 命令处理程序运行域逻辑 域本身调用 Web 服务 一旦获得响应 它将适当的事件附加到当前聚合并存储它们 该域基
  • DDD 和 CQRS:从单个命令处理程序使用多个存储库?

    简单电子商店的典型示例 假设用户将一些商品添加到购物篮并单击 结账 发出 创建订单 命令 现在 在实际创建状态为 预计付款 的订单记录以及数据库中相应的订单行之前 我们必须检查用户选择的商品是否仍然可用 也许某些商品在用户将其添加到购物篮时
  • J Oliver EventStore V2.0 问题

    我正在着手使用 CQRS 实施一个项目 并打算使用 J Oliver EventStore V2 0 作为我的事件持久化引擎 1 在文档中 ExampleUsage cs在 BuildSerializer 中使用了3个序列化器 我想这只是为
  • GOF 与 CQRS 中命令模式的含义

    当查看命令模式时 发现了细微的差异 也许有些人能够更清楚地说明这一点 当查看 Gang Of Four 时 它说每个命令都有一个Execute方法参见例如 http www blackwasp co uk Command aspx http
  • IRequestHandler 返回 void

    请看下面的代码 public class CreatePersonHandler IRequestHandler
  • CQRS 项目是否需要像 NServiceBus 这样的消息传递框架?

    过去 6 个月的学习曲线充满挑战 CQRS 和 DDD 是罪魁祸首 这很有趣 我们的项目已经完成了 1 2 我还没有时间深入研究的领域是消息传递框架 目前我不使用 DTC 因此如果我的读取模型未更新 那么很可能会出现读取和写入数据库之间的不
  • 使用 CQRS 和事件溯源时的唯一性验证

    我正在尝试使用事件源来实现我自己的 CQRS 基础设施 以更好地学习它 作为一个示例项目 我正在实现一个博客引擎 我知道它可能不是一个完美的选择 但我只想做一些真实的事情 我现在遇到的问题是验证 每个帖子都有一个shortUrl 以及sho
  • 在 DDD/CQRS 中,ReadModel 是否应该充当 ViewModel,如果不是,那么映射的责任在哪里?

    假设读取模型ProductCatalogueItem由聚合 写入模型构建 与写入模型分开存储 并包含每个可供销售的产品 并具有以下属性 basics product code name price number of available s
  • DDD 中哪一层应该包含查询

    我有一个简单的 DDD 服务 带有文章聚合根 我使用 MediatR 和 CQRS 来分离命令和查询 在 DDD 域中不应依赖于应用程序和基础设施层 我有一个存储库 IArticleRepository 用于从文章数据库中组合一些数据 我有
  • 使用 CQRS 的读取端实现方法

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

    我目前正在开发一个整体系统 我希望将其引入现代并结合 DDD 和 CQRS 我收到了重新编写解决方案的导入机制的请求 并认为这可能是开始此重新架构过程的好机会 目前流程是 用户上传 CSV 系统解析 CSV 并在屏幕上显示每一行 对每一行以
  • CQRS - 读取端的事件重播

    我读过几篇关于 CQRS 的博客 它们都解释说 在写入端 事件会持久保存在事件存储中 并且根据请求 事件将被检索并聚合重播 我的问题是为什么读取端不需要聚合事件重播 因为您的读取端不使用聚合 读取端实现为投影 它根据聚合发出的事件流计算当前
  • 缺失的事件如何重播?

    我正在尝试了解有关 CQRS 和事件溯源 事件存储 的更多信息 我的理解是 在这种情况下通常不使用消息队列 总线 消息总线可用于促进微服务之间的通信 但它通常不专门用于 CQRS 然而 我目前的看法是 消息总线将非常有用 可以保证读取模型最
  • CQRS/ES 世界中的报告

    我想我理解 ES CQRS 背景下的读取模型的想法 如果不明白请纠正我 然而 我对于在 严肃 报道的背景下使用它仍然有一些疑问 假设我使用关系数据库加上一些 ORM 来整理我的读取模型 一个基本的 摘要统计读取模型 可能如下所示 class
  • 如何使用 J Oliver 的 EventStore 库?

    我一直在研究一个新项目的事件溯源 使用 J Oliver 的 EventStore 和 mongo 作为持久层 但遇到了一些问题 在尝试事件溯源之前 我的域持久保存到数据库 并且我一直在使用 Udi 的域事件pattern http www

随机推荐

  • 试驾 Nancy 模块

    好的 我喜欢 NancyFx 用这么几行代码编写一个 Web 应用程序真是太棒了 但是如何在单元级别上测试驱动 NancyModule 请注意 我知道优秀的测试框架 https github com NancyFx Nancy wiki T
  • 电报频道的帖子观看次数[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想了解有关电报频道的帖子浏览计数系统的更多信息 它是如何工作的 与此相关的API VB 部分是什么 我也有这个疑问 为了得到答案 我
  • 基于范围的 for 循环对性能有益吗?

    阅读 Stack Overflow 上有关 C 迭代器和性能 的各种问题后 我开始想知道是否for auto elem container 被编译器 扩展 成最好的版本 就像auto 编译器立即将其推断为正确的类型 因此永远不会更慢 有时甚
  • 可移植类库配置文件 78 缺失属性相关方法/属性

    在我的 PCL 核心项目 WP8 Android iOS Xamarin MvvmCross 中 我使用自定义属性 Type GetCustomAttributes 扩展方法允许我检查所使用的属性 使用 PCL Profile104 效果很
  • 在 Swift 中使用 CIColorMatrix 过滤器

    以下 Swift 函数应该使用指定的 tintColor 对灰度图像 greyImage 进行着色 import UIKit func colorizeImage greyImage UIImage tintColor UIColor gt
  • VBA 将数据透视表的源数据更新到行尾

    我试图弄清楚当使用 VBA 数据更改时如何将数据透视表源数据更新到行尾 我当前的代码如下 Dim shBrandPivot As Worksheet Dim shCurrentWeek As Worksheet Dim shPriorWee
  • 转换为盒子

    我有一个Box
  • 如何将 AWS CLI 的输出保存在变量中?

    我想将 AWS CLI 的输出保存在变量中 并在另一个 AWS CLI 中使用该变量 我所做的如下 taskarn aws ecs list tasks cluster mycluster service name myService re
  • WordPress 无法与站点通信

    我正在尝试添加一个搜索框 到目前为止我拥有的代码是 div style padding right 30px padding top 25px height 50px width 500px div 我不断收到以下消息 无法与站点通信以检查
  • React:搜索过滤器无法正常工作

    我通过 API 从服务器获取记录 API 是在 Loopback 中构建的 实际上 我在每个页面上显示 5 条记录 目前工作正常 我可以导航next or prev通过分页按钮 每页显示 5 条记录 问题是 当用户在搜索框中键入内容时 记录
  • 为什么 Perl 的 LWP 给我的编码与原始网站不同?

    可以说我有这个代码 use strict use LWP qw get my content get http www msn co il print STDERR content 错误日志显示类似 xd7 x9c xd7 x94 xd7
  • 理解Python for循环中的范围

    下面的程序正在查找给定范围内的素数 对于 noprimes 列表理解部分 为什么我们有 3 个参数在范围内 noprimes j for i in range 2 8 for j in range i 2 50 i primes x for
  • Sencha Touch Label - 它有点击事件吗?

    我正在尝试使用 sencha touch 2 构建一个抽认卡应用程序 我有一个显示问题的标签 它占据了整个屏幕 我希望这样当用户点击标签时就会显示答案 标签有 点击 事件吗 当我使用按钮时它有效 但当我使用标签时则无效 另一种方法是我是否可
  • ASP .net 从 page_load 函数后面的代码中获取隐藏值

    我在 javascript 代码中设置了一个隐藏字段
  • 使用 cypher 和 apoc 将数百万个节点添加到 neo4j 空间层

    我有一个包含 380 万个节点的数据集 我正在尝试将所有这些加载到 Neo4j 空间中 节点将进入一个简单的点层 因此具有所需的纬度和经度字段 我试过了 MATCH d pointnode WITH collect d as pn CALL
  • 匀称多边形到二元蒙版

    我已经看到这个问题被问到 但还没有真正找到完整的答复 我有一个简单的形状多边形 称为polygon 我想提取这个多边形作为二进制掩码 最好是 numpy 数组 我该怎么做呢 我还成功地从 shapely 转换为 geopandas 如图所示
  • 从 HDFS 传出文件

    我想将文件从 HDFS 传输到另一台服务器的本地文件系统 该服务器不在 hadoop 集群中 而是在网络中 我本可以这样做 hadoop fs copyToLocal
  • Android 获取未聚集的标记

    我正在开发一个 Android 应用程序并且正在使用Google 地图 Android API 实用程序库 https developers google com maps documentation android utility 更具体
  • 最大宽度不适用于弹性项目

    我有一列中有一个弹性容器和两个弹性子容器 顶部 div 应填充所有剩余空间 底部 div 的高度应由内容和max width 但底部 div 的宽度正在缩小到其内容的宽度 这max width正在被忽视 hero image min hei
  • 使用 membus 和 ioc 容器的 SetHandlerInterface() 的多种类型

    过去此处演示 CQRS 代码 https gist github com hyrmn 3200053 raw 39ae14e4226d5e0d032690bf0e37e75286d2a1f7 EndToEndTests cs命令和事件处理程