CQRS之旅——旅程1(我们的领域:Contoso会议管理系统)

旅程1:我们的领域:Contoso会议管理系统

本章介绍了一个虚构的公司Contoso。它描述了Contoso计划推出的会议管理系统,这是一个新的在线服务,可以使其他公司或个人通过此系统组织和管理自己的会议和活动。本章从高层次描述了新系统的一些功能和非功能需求,以及为什么Contoso希望使用CQRS和Event Sourcing实现部分功能。与任何考虑此过程的公司一样,有许多问题需要思考和挑战,特别是这是Contoso第一次同时使用CQRS和Event Sourcing。接下来的章节将逐步展示Contoso是如何设计和构建其会议管理系统的。

另外,本章还介绍了一个虚构的专家小组来评论开发工作。

Contoso公司

Contoso是一家新兴的ISV公司,拥有大约20名员工,专门使用微软技术开发解决方案。Contoso的开发人员熟悉各种微软产品和技术,包括.Net Framework、ASP.NET MVC和Microsoft Azure。一些开发人员以前有使用领域驱动设计(DDD)方法的经验,但是他们以前都没有使用过CQRS模式。

会议管理系统应用程序是Contoso想要推向市场的首批创新在线服务之一。作为一家初创企业,Contoso希望用最少的硬件和IT人员投资来开发和推出这些服务。为了开始扩大市场份额,Contoso想要快速进入市场,但是没有时间实现第一个版本中所有计划的功能。所以,重要的是,它采用的体系结构要能够轻松地适应更改和增强,同时对系统的现有用户的影响最小。Contoso选择将应用程序部署在Azure上,以利用其随需求增长而扩展应用程序的能力。

这次CQRS之旅谁将和我们同行

如前所述,本指南和随附的参考实现里描述了这次CQRS之旅。一个专家小组将在我们进行的过程中对我们的开发工作发表意见。其中包括CQRS专家、软件架构师、开发人员、领域专家、IT专家和业务经理。他们都会从自己的角度进行评论。

人物 角色描述
dn313277.persona-jana-r-h55%28en-us%2cpandp.10%29.png Jana是一名软件架构师。她设计应用程序的总体结构。她的观点既切合实际又具有战略意义。换句话说,她不仅考虑现在需要什么技术方法,还考虑公司未来需要什么方向。Jana从事过使用DDD的项目。

“平衡公司、用户、It组织、开发人员和我们所依赖的技术平台的需求并不容易。”

dn440719.persona-ed-r-h55%28en-us%2cpandp.60%29.png Carlos是领域专家。他通晓会议管理的所有细节。他在许多帮助人们举办会议的组织中工作过。他还担任过许多不同的职务:销售、市场营销、会议管理和顾问。

“我想确保团队了解这项业务的运作方式,以便我们能够提供世界级的在线会议管理系统。”

dn440721.persona-christine-r-h55%28en-us%2cpandp.60%29.png Beth是一位业务经理。她帮助公司规划他们的业务将如何发展。她了解公司所处的市场,公司拥有的资源,以及公司的目标。她既有战略眼光,又对公司的日常运营感兴趣。

”公司在资源方面面临着许多相互矛盾的需求。我想确保我们的公司能平衡这些需求,并采取一项能让我们在中长期取得成功的商业计划。“

如果您对某一特定领域感兴趣,可以查看与您兴趣一致的专家提供的注释。

Contoso会议管理系统

本节将按照团队在旅程开始时的设定,介绍Contoso会议管理系统。该团队以前从未使用过CQRS模式,因此,我们在旅程结束时交付的系统可能并不完全符合这一描述,因为:

  • 我们边学边做的东西可能会影响我们最终的交付。
  • 这是一个学习的过程,很难估计我们能在可用的时间内完成什么。

系统概述

Contoso计划建立一个在线会议管理系统,使其客户能够计划和管理在物理位置举行的会议。该系统将使Contoso的客户能够:

  • 管理会议不同类型座位的销售。
  • 创建一个会议并定义该会议的特征。

Contoso会议管理系统将是一个多租户、云托管的应用程序。业务客户在创建和管理会议之前需要在系统中注册。

会议售座

业务客户定义会议可用的座位数量。业务客户还可以指定会议上的活动,如研讨会、招待会和高级会议,与会者必须有单独的票。业务客户还定义了这些活动可用的座位数量。

该系统管理座位的销售,以确保会议和子活动没有超额认购。该系统的这部分还将执行候补名单,以便如果其他与会者取消,他们的座位可以重新分配。

系统将要求与会者的姓名与购买的座位相关联,以便现场系统在与会者到达会议现场时为他们打印徽章。

创建会议

业务客户可以创建新的会议,并管理有关会议的信息,如会议名称、描述和日期。业务客户还可以通过发布会议,使会议在Contoso会议管理系统网站上可见,或者通过取消发布来隐藏会议。

此外,业务客户还可以为会议定义每种座位的类型和可用数量。

Contoso还计划可以使业务客户能够指定会议的以下特征:

  • 论文提交过程是否需要审阅。
  • 什么样的收费架构。
  • 关键人员是哪位,例如:项目主席,活动策划者

非功能性需求

Contoso对其会议管理系统有两个主要的非功能性需求:可扩展性和灵活性,它希望CQRS模式能够帮助它满足这两个需求。

可扩展性

会议管理系统将托管在云端。Contoso选择云平台的原因之一是它的可扩展性和弹性潜力。

尽管像Azure这样的云平台允许您通过添加(或删除)角色实例来扩展应用程序,但是您仍然必须将应用程序设计为可扩展的。对于许多应用程序来说,读操作的数量远远超过写操作的数量。通过将应用程序的读写操作划分为单独的对象,CQRS模式允许Contoso将这些操作划分为单独的Azure角色,这些角色可以彼此独立扩展。这意味着Contoso有机会更有效地扩展会议管理系统,并更好地利用它所使用的Azure角色实例。

灵活性

Contoso会议管理系统所处的市场竞争非常激烈,而且发展非常迅速。为了竞争,Contoso必须能够快速有效地使会议管理系统适应市场的变化。对灵活性的这一要求可分为若干相关方面:

  • 系统必须能够不断改进,以满足新的需求,并对市场的变化做出反应。

    JJ591578.note(en-us,PandP.10).gifPoe(IT运维)发言:

    这是一个巨大的挑战:在所有客户还在运行系统的过程中进行不停机升级。

  • Contoso希望这款软件至少能使用五年。它必须能够适应这段时期内的重大变化。
  • Contoso不希望系统某些部分的复杂性成为未来改变的障碍。
  • Contoso希望使用不同层次的开发人来开发系统的不同部分,简单的任务使用便宜的开发人员,更贵和更有经验的的开发人员用于开发系统的关键部分。

    JJ591578.note(en-us,PandP.10).gifGary(CQRS专家)发言:

    在CQRS社区中有一些争论,关于在实践中,您是否可以为CQRS模式实现的不同部分使用不同的开发团队。

即将开始CQRS之旅

下一章是我们CQRS旅程的开始。它提供了关于Contoso会议管理系统的更多信息,并描述了系统的一些高级部分。随后的章节描述了Contoso实现会议管理系统的过程。

转载于:https://www.cnblogs.com/angrymoto/p/cqrs-journey-day1.html

文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树首页概览8577 人正在系统学习中 相关资源:旅行家航旅行程信息打印软件-旅游工具类资源-CSDN文库

来源:weixin_30372371

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年4月26日
下一篇 2019年4月26日

相关推荐