亮网络解锁器,解锁网络数据的无限可能 了解详情
写点什么

基于 C#的 CQRS 教程发布

  • 2013-06-23
  • 本文字数:732 字

    阅读完需:约 2 分钟

Jonathan Worthington Carl Mäsak 编写并开源了一款新的 CQRS (命令查询职责分离模式)初学者教程,它旨在帮助开发者在.NET 平台上实现 CQRS。

这两位开发者指出这不是一个框架,而是做为对学习 CQRS 感兴趣的开发者的“一堆 C#代码” ,如果有可能用户可以修改代码满足自己的需求,并将它作为自己基于 CQRS 的系统的基础。

该教程中的代码是一个基于咖啡馆领域模型,其主要概念集中在一个 tab 页中,通过它可以跟踪进入咖啡馆的个人或团体。教程本身划分为五个不同步骤,依次为设计、领域逻辑、读模型,接下来是整合到 ASP.NET MVC 应用中的模型。

在该教程中,Jonathan 和 Carl 也带出一些值得思考的地方,比如假如用户要扩展例子到生产环境中,需要考虑事务和最终的一致性。

Jonathan 和 Carl 强调,除非用户正处在学习阶段,否则不应该一开始就学习 CQRS,因为它是新兴事物,如果用户的架构目标如下所述则应该考虑学习:

我想以命令 / 事件的方式去实现我的领域模型逻辑,因为用这种方式去建模和编写测试将帮助我交付满足客户需要的系统。我想坚持使用事件存储但它不能满足查询需求。因此,我也需要使用关系数据库。这意味着读和写需要通过不同的代码路径去实现,这种情况下将可以适合使用 CQRS。

CQRS 是一种日益受到关注的架构模式。由 Eric Evans 及其他人维护的 DDD 社区网站,特别指出了其重要性:

CQRS 和事件溯源(Event Sourcing)是两种实现 DDD 的紧密的架构方法,他们在过去几年一直是 DDD 中的热点话题。

查看英文原文: New C# based CQRS Tutorial available

感谢水羽哲对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2013-06-23 08:023121
用户头像

发布了 81 篇内容, 共 22.9 次阅读, 收获喜欢 4 次。

关注

评论

发布
暂无评论
发现更多内容

动态高并发时为什么推荐ReentrantLock而不是Synchronized?

moon聊技术

JVM 并发 synchronized ReentrantLock 锁升级

装机必备:借用IDM实现百度云高速下载

懒得勤快

LeetCode题解:515. 在每个树行中找最大值,DFS,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

海阔天空的游戏出海,HMS生态提供的风帆与通路

脑极体

请问如何短时间突击 Java 通过面试?

Java架构师迁哥

话题讨论 | 程序员自己电脑中毒是甚么体验?

xcbeyond

话题讨论

一周信创舆情观察(11.30~12.6)

统小信uos

Spark-submit执行流程,了解一下

华为云开发者联盟

spark 技术 流程

使用LiteOS Studio图形化查看LiteOS在STM32上运行的奥秘

华为云开发者联盟

LiteOS 脚本 语言

DolphinDB与Elasticserach在金融数据集上的性能对比测试

DolphinDB

数据处理 金融 时序数据库 tsdb DolphinDB

三分钟看懂新一代.Net Core3.1工作流引擎平台

Philips

敏捷开发 工作流

让垃圾分类开发“极快致简”的好物件,零基础的开发小白也能轻松驾驭它!

华为云开发者联盟

数据 分类

最简单的Go Dockerfile编写姿势,没有之一!

万俊峰Kevin

Docker Dockerfile Go 语言

华为云亮相QCon2020深圳站,带你体会大厂的云原生玩法与秘诀

华为云开发者联盟

专家 华为云 深圳

Serverless 如何落地?揭秘阿里核心业务大规模落地实现

阿里巴巴云原生

阿里巴巴 阿里云 Serverless 开发者 云原生

【得物技术】MySQL多表关联同步到ES的实践

得物技术

MySQL 原理 配置 ES 多表join

了解OAuth2.0

环信

官方活动 | 盘点2020有奖征文

InfoQ写作社区官方

盘点2020 热门活动

训练营第八周作业

大脸猫

极客大学架构师训练营

分布式事务框架 seata-golang 通信模型详解

阿里巴巴云原生

数据库 微服务 云原生 Go 语言

SGY奇点交易所系统软件APP开发

系统开发

我哭了!Centos6停止更新只能切换7,哪些习惯也需要切换

小Q

Java Linux centos 学习 面试

《迅雷链精品课》第十二课:PoW共识算法

迅雷链

区块链

如何判断一个区块链项目是否优质?

CECBC

开源

什么是802.11ax(Wi-Fi 6)

多国探路数字货币

CECBC

数字货币

区块链加速产业革命,打造畜禽养殖业发展新途径

CECBC

养殖业

训练营第八周总结

大脸猫

极客大学架构师训练营

我哭了!Centos6停止更新只能切换7,哪些习惯也需要切换

996小迁

Java 架构 面试 Centos6

滴滴DoKit-功能介绍之文件同步助手

工具 文件 DoKit

构师训练营第八周学习笔记

李日盛

笔记

基于C#的CQRS教程发布_语言 & 开发_Jan Stenberg_InfoQ精选文章