gpt4 book ai didi

naming-conventions - CQRS命名约定

转载 作者:行者123 更新时间:2023-12-03 23:40:04 27 4
gpt4 key购买 nike

我正在实现一个新的Web服务,并且在我尚未使用CQRS的同时,我想创建我的服务,以便将来可以轻松地将其移至CQRS。因此,我想知道DTO类和方法的命名约定。

我已经阅读了有关DTO命名约定的blog post,对我来说似乎很明智。它建议以下...

  • SomeSortOfQueryResult
  • SomeSortOfQueryParameter
  • SomeSortOfCommand
  • SomeSortOfConfigItem
  • SomeSortOfSpecification
  • SomeSortOfRow
  • SomeSortOfItem(用于集合)
  • SomeSortOfEvent
  • SomeSortOfElement
  • SomeSortOfMessage

  • 我要问的是我应该如何命名我的方法。使用 GetSomething是一种好习惯,还是 SomeQuery会更好?

    最佳答案

    命名实际上应该只是从该方法正在做的事情中得出的。退后一步,首先查看Command-query separation (CQS)。您实际上要在此处执行的操作是确保任何给定的方法都是,用于查询数据或命令发生某些事情。

    IE。 “索取值不应更改该值”。

    CQRS有所不同,但规模较大,而且通常不太为人所知。不过,它不一定复杂,只需在体系结构级别而不是代码级别应用CQS概念。例如,您可以为命令选择WCF,为查询选择原始SQL。它旨在使您可以自由地使查询成为可能的最简单方法,而您的命令仍然可以获得完整的域模型或其他适用于您的业务规则的实现。

    CQRS还可将您从CRUD应用程序转移到基于任务的应用程序,您可以在其中基于用户交互将重点更多地放在问题域上,而不仅仅是读取和保存数据。

    查询

    通常,只要意图很明确,我就在FindXYZ()GetXYZ()LoadXYZ上命名“查询”变体(即返回一些数据,请勿修改任何数据)。

    指令

    尽管您可以用与PowerShell的cmdlet命名约定-verb-noun类似的术语来思考,但是通常很难命名命令。就我个人而言,尽管我倾向于将命令实现为CommandProcessor模式,其中命令实际上是包含参数的对象(有时仅是实体的主键)。有代码为每个命令的Type寻找合适的“处理器”。通常,在CQRS中,您将尝试保持同步,因为异步意味着您在处理无法处理的命令方面还有更多工作要做,但是如果您确实需要异步命令,则命令的处理程序可能会发送一个发送给ESB的消息。

    关于naming-conventions - CQRS命名约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7025160/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com