当前位置: 首页 > news >正文

怎样做网站变手机软件商业网站建设心得体会

怎样做网站变手机软件,商业网站建设心得体会,东莞网站设计制作公司,装修公司网站asp源码在微服务架构盛行的当下#xff0c;DDD#xff08;领域驱动设计#xff09;也得到了崭新的发展。同时#xff0c;随着DDD的不断发展#xff0c;也诞生了一些新的设计思想和开发模式#xff0c;今天要介绍的事件溯源是其中具有代表性的一种模式。 事件溯源模式是DDD领域中… 在微服务架构盛行的当下DDD领域驱动设计也得到了崭新的发展。同时随着DDD的不断发展也诞生了一些新的设计思想和开发模式今天要介绍的事件溯源是其中具有代表性的一种模式。 事件溯源模式是DDD领域中一种新的架构模式专门用来处理应用程序中的状态变化。事件溯源模式的实现方式与传统的应用程序开发方法有很大不同表现在对应用程序状态的存储和检索过程。 事件溯源模式设计理念 在对事件溯源进行详细展开之前我们先来回顾一下传统应用程序中关于“状态”的维护方法。让我们先从一个典型的应用场景开发说起在日常开发过程中开发人员经常需要处理与用户相关的操作例如用户的创建、密码修改、地址更新、权限变更等。 在这个场景中代表用户概念的User就是核心的领域对象。那么基于该领域对象你会怎么处理对应的业务操作呢 域溯源模式 在传统应用程序中我们使用常见的数据库如关系数据库、NoSQL数据库来创建、修改或查询业务领域对象的状态。另一方面我们通过把这些状态持久化到一定的数据存储媒介之后也可以通过领域事件的形式把事件发布到消息中间件。基于以上分析我们认为这种状态变化的过程是领域对象来驱动的也就是说只有领域对象主动更新自己的状态并生成领域事件我们才能获取到应用程序状态的变化。 反过来讲如果领域对象没有主动更新数据或生成任何领域事件那么我们也就无法感知到应用程序的状态已经发生了变化。从状态的源头Source来讲我们认为这种处理方式是一种域溯源Domain Sourcing的方式。 基于域溯源模式我们在对领域对象执行一定操作之后会把对象的最新状态持久化到数据库中也就是说数据库中的数据反映了对象当前最新的状态。 从上图中我们可以看到针对用户状态更新的各个操作在数据库中只会存在一条数据记录反应了该用户的当前的最新信息。至于各个操作的具体执行过程通常可能会设计一张操作日志表。 显然域溯源的实现过程比较简单也符合开发人员的直观认知因为它们使用了存储和查询应用程序状态的传统实现方案。只要能够正确保存领域对象我们就能获取应用程序最新的状态信息。 事件溯源模式 接下来我们要引入的事件溯源机制则采用了另一种设计理念。与域溯源模式不同事件溯源模式只关注于处理领域对象上发生的领域事件。也就是说事件溯源模式不是保存对象的最新状态而是保存这个对象所经历的每个事件所有由对象产生的事件会按照时间先后顺序有序的存放在数据库中。 当我们需要这个对象的最新状态时只要先创建一个空的对象然后把和该对象相关的所有事件按照发生的先后顺序从先到后全部执行一遍。这个过程就是事件溯源如下图所示。 从上图中可以看到事件溯源的核心设计思想在于不保存对象的最新状态而是保存导致对象状态发生变化的所有事件这样就可以通过对这些事件进行溯源得到对象的最新状态。 显然基于事件溯源的设计思想一个事件就是表示一个事实事实是不能被磨灭或修改的所以事件本身是不可修改的Immutable我们只能执行新增和查询操作。而对比域溯源模式和事件溯源模式我们不难发现有两个差异点。 以上两点构成了事件溯源模式的能够得以实施的前置条件。当我们把应用程序的状态变更全部进行持久化之后接下来我们就可以真正实现所谓的溯源操作了。 实现事件溯源模式 理解了事件溯源的基本概念之后接下来我们讨论具体的实现过程。 事件存储 实现事件溯源的第一步是确保领域事件都得到持久化。在事件溯源模式中存储事件的组件被称为事件存储器Event Store。下图展示了采用事件溯源机制下各组件的交互示意图。 结合上图我们来举一个具体的示例。如果我们正在设计一个典型的用户应用程序那么基于上图中的交互过程在用户更新密码时就会生成一个PasswordUpdatedEvent这样一个领域事件。我们只需要对这个领域事件进行持久化而不需要保存User这个领域对象。PasswordUpdatedEvent事件将被持久化到一个专门构建的事件存储器UserEventStore中。 事件回放 接下来假设需要获取用户应用程序中User这个领域对象的最新状态那么基于事件溯源机制我们将采用一种比较特殊的实现方式。首先我们会从事件存储器中加载User对象上已经发生的所有领域事件。然后我们在User对象上依次执行所有领域事件所包含的状态变化信息从而确保User对象达到当前的最新状态。整个执行过程如下图所示。 有时候我们把在User对象上重新执行领域事件的这个过程成称为事件回放Event Replay。可以看到基于事件溯源机制我们采用的是一种纯事件驱动的实现方法。 整合DDD和事件溯源 在DDD中我们把某一个独立的业务模块划分成一个限界上下文。在每个限界上下文中势必会存在聚合对象。生成领域事件的一般就是这些聚合对象而聚合的创建常见是在应用服务中。因此DDD和事件溯源机制的整合效果如下图所示。 另一方面领域事件一般都具有传播性如果我们想要把领域事件传播出去那么可以引入一个事件路由器来实现这一目标。 结合前面介绍的案例场景那么User就是聚合对象而我们可以把对应的事件路由器命名为UserEventRouter。PasswordUpdatedEvent这个领域事件被我们发送到事先已经设计好的消息路由通道从而供其他限界上下文中的事件处理器进行消费。这个过程中领域事件是否被持久化实际上是没有任何约束的。 在应用程序开发过程中我们通常使用关系型数据库来维护业务对象的最新状态。这是一种比较传统的实现方案但如果我们想要进一步明确该业务对象所执行的各种操作问题就变得没有那么简单。而今天介绍的事件溯源机制为我们提供了另一种完全不同的实现思路。在事件溯源机制中我们保存的不是数据状态本身而是引起这些状态发生的各种事件。通过在业务对象上依次执行这些事件我们就能够获取该业务对象所经历的各种操作过程和结果。在日常开发过程中针对如何实现事件溯源我们需要考虑事件的存储、事件的回放等技术组件同时也需要考虑DDD和事件溯源的整合过程因为时间溯源的主要应用方式就是在DDD应用程序中。
http://www.tj-hxxt.cn/news/138525.html

相关文章:

  • 深圳国外网站建设比尤果网做的好的网站
  • 正邦 网站建设网络推广策划方案
  • 注册网站如何备案网站关键词优化的步骤
  • 卡地亚手表官方网站58同城建筑招聘网最新招聘
  • 做网站怎样做全页面服装设计个人工作室
  • 做网站需要知道哪些事情品牌营销推广
  • qq互联网站备案号龙岗外贸网站建设公司
  • 凡客建站登陆西安商城网站开发
  • 南京做网站优化的企业排名学设计在哪学比较好
  • 办公空间设计网站网站设计属于什么经营范围
  • 网站栏目页描述怎么写wordpress分享可见内容
  • wordpress网站背景设置方法电话语音聊天网站建设多少钱
  • 电子商务网站开发设计黑龙江建设网网上办事大厅
  • 济南市做网站的公司怎么做网站扩展
  • 网站进度条源代码juqery-ui建设网站目的及功能定位
  • 上海网站营销推住房和城乡建设部政务服务门户官网
  • 苏州网站建设开发公司工程招标信息在哪看
  • 如何查询网站开发商中企动力公司官网
  • 做一电影网站的apkWordPress FCKEditor
  • 福州做网站企业用dw6做网站
  • 传媒公司网站企业的vi设计都包括哪几种
  • 网站推广策划执行方案seo关键词seo排名公司
  • 网站收录一键提交名字找备案网站
  • 深圳建设工程信息网查询系统sem优化方法
  • 网站建设知名郑州软件开发公司招聘
  • asp网站数据库连接中国商铺网
  • 个体工商网站备案欧美风网站
  • flash做的网站php可视化网站开发工具
  • 西安网站seo诊断手机网站大全观看
  • 企业网站及信息化建设酒泉网站建设费用