- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在阅读有关使用 Command 对象来表示我们的域公开的用例,以及使用 Command Handler 对象来处理这些命令的内容。
例如:
注册用户命令
RegisterUserCommandHandler
但它看起来与 RegisterUserService
完全相同,其中命令对象代表 registerUser()
方法的参数。
当然,如果该方法有太多参数,我最终会创建一个对象来包装它们,并且该对象将与 RegisterUserCommand
相同。
那么为什么要用不同的模式来表示同一事物呢?服务是广泛存在的,而不是命令(根据我的经验);我所缺少的有什么区别?简而言之,为什么我要使用其中一种而不是另一种?
最佳答案
拥有命令可以给你带来良好的旧命令模式的好处:
如果您的服务很大,每个服务都有许多复杂的方法(如果这些方法不复杂,您可能不应该使用 DDD 或 CQRS),那么将每个方法移动到命令处理程序中可能会改进您的应用程序可组合性更强、更易于测试等。毫无疑问,对于直接从大型服务重构为命令/命令处理程序的人来说,通常会认为这是后一种模式的好处。但是,通过将大型服务分解为较小的服务(如示例中非常具体的服务所建议的那样),您可以获得相同的好处,因此严格来说,这在服务和命令/命令处理程序之间没有区别。
关于design-patterns - Command + CommandHandler 和 Service 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24474859/
我有一个问题,我希望我的处理程序使用从处理程序生成的数据: UpdateUserProfileImageCommandHandlerAuthorizeDecorator UpdateUserProfi
我有一个问题,我希望我的处理程序使用从处理程序生成的数据: UpdateUserProfileImageCommandHandlerAuthorizeDecorator UpdateUserProfi
我尝试使用命令 DTO,但无法识别他的处理程序。当我记录 DTO 时,它是一个没有 CreateUserCommand 签名的简单对象 {...}。 这是我的 Controller : async i
我是 C# 的(非常)新手,我正在尝试用这种语言实现现有的应用程序元模型。在此元模型中,“菜单”表包含表单和操作的组合,指示对于每个表单,哪些操作应该可用。 然后我可以使用这个“菜单”数据源在运行时构
我想在命令处理程序中使用命令列表,但永远不会调用相应的函数。 getabList = ["getab"] for x in range(0, 31): getabList.append("ge
在我的开发团队中,我们正在使用 this article 中描述的 CQRS 模式并使用推荐的 DI 容器:Simple Injector (双关语)。 这是我们当前的项目结构: 01 WebApp
我在最近的项目中使用了 CQRS 模式,并在我的 DAL 中首先使用了 EF 代码,所以我定义了一些通用的 CommandHandlers插入/更新/删除: public class InsertCo
我有以下测试用例: [Test] public void MarkAsSuccessfulTest() { //setup data var p
我一直在阅读有关使用 Command 对象来表示我们的域公开的用例,以及使用 Command Handler 对象来处理这些命令的内容。 例如: 注册用户命令 RegisterUserCommandH
我目前正在使用 Axon 4.2,并且我有一个聚合(Customer),它在其 @CommandHandlers 中使用注入(inject)的服务(CustomerService) 方法。 下面显示了
所以我试图了解 axon 3.4 中的分布式命令总线。我有一个用例,当发送某个命令时,聚合会发送一个启动传奇的事件,该传奇会发送 2 个命令,以保持发送到 2 个不同服务的数据处于一致状态。 现在棘手
我是一名优秀的程序员,十分优秀!