【问题标题】:Is CQRS alternative to CRUD?CQRS 是 CRUD 的替代品吗?
【发布时间】:2013-09-09 01:24:07
【问题描述】:

CQRS 和 CRUD 有什么不同,我可以在这两种情况下使用 UnitOfWork 和 Repository 模式吗?

如果我在你推荐我的实体之间有复杂的关系,为什么?

CQRS 模式http://martinfowler.com/bliki/CQRS.html
CRUDhttp://en.wikipedia.org/wiki/Create,_read,_update_and_delete

任何帮助将不胜感激。

【问题讨论】:

  • CRUD 和 CQRS 是完全不同的东西,并不相互排斥。 CQRS 仅意味着您的写入模型与读取模型分开。因此,两者都可以相互独立地扩展。虽然 CQRS 通常与 DDD 和 EventSourcing 相关联,但这些并不是 CQRS 的先决条件。

标签: entity-framework architecture sharp-architecture architectural-patterns


【解决方案1】:

CQRS 通常用于复杂的应用项目。 DDD 也用于复杂的应用程序项目,并且似乎与 CQRS 相关联。 DDD 试图处理行为的复杂性。 CRUD 系统几乎没有行为。一个行为很少或没有行为的系统实际上并不具有复杂的事件结构,因此很难说您从 CQRS 中获得了多少好处。

【讨论】:

    【解决方案2】:

    CRUD - 你对一个对象执行读写操作。

    CQRS - 您将读取和写入操作拆分为两个单独的对象。您可以对其进行简化,并将其实现为一个对象上的两个独立接口:一个用于读取,一个用于写入。然后,您可以根据需要实例化对象。或者您可以进一步移动它,并使用单独的数据库进行读取和写入。

    在大多数情况下,CRUD 是答案,但 CQRS 可以适用于一些复杂的场景。

    如果您使用的是实体框架,则不应使用工作单元和存储库,因为它是由 EF 原生实现的。

    在 CRUD 中,使用 Unit of Work 和 Repository 是正常的。对于 CQRS - 我不知道。

    【讨论】:

      猜你喜欢
      • 2011-03-17
      • 2010-11-17
      • 2011-03-29
      • 2019-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多