写点什么

Newbe.Claptrap 框架如何实现 Claptrap 的多样性?

用户头像
newbe36524
关注
发布于: 2020 年 08 月 12 日
Newbe.Claptrap 框架如何实现 Claptrap 的多样性?

Newbe.Claptrap 框架如何实现 Claptrap 的多样性?最近整理了一下项目的术语表。今天就谈谈什么是 Claptrap Design 和 Claptrap Factory。



特别感谢 kotone 为本文提供的校对建议!



Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架。如果您是首次阅读本系列文章。建议可以先从本文末尾的入门文章开始了解。



Claptrap Design 实现 Claptrap 的高可定制性



Claptrap 拥有较高的可定制性。开发者可以为 Claptrap 对象设置自定义的 Event Loader/ Event Saver/ State Loader / State Saver / EventNotification Method 等等一系列组件。而这一切的自定义,都可以具体反映到 Claptrap Design 对象上。



Claptrap Design 就像一个设计图,决定了 Claptrap 的每个细节,常见的包括:



  1. 采用什么样的 Event Loader / Event Saver 来处理事件。

  2. 多久保存一次 State 快照。

  3. Minion ,如果是,那么 Master 是谁。

  4. 有多少种事件,对应的 Event Handler 分别是什么。



这些细节都会在应用程序启动时,将会通过类型扫描、属性标记、连贯接口、配置文件等等多种方式进行配置。从而形成完整的 Claptrap Design。并且,启动时会对 Claptrap Design 进行合理性的验证,确保 Claptrap Design 都是基本可用的。从而不会出现类似于 “忘记编写 Event 对应的 Handler” 这样低级的错误。



所有的 Claptrap Design 都会被集中保存在 IClaptrapDesignStore 这样一个内存对象中,以便 Claptrap Factory 在构建 Claptrap 检索。



开发者也可以基于 IClaptrapDesignStore 中的所有数据,来构成可供人类阅读的文本或者图形,以便更容易地从高层面来了解当前系统中 Claptrap 之间的相互关系和配置细节,源于代码却高于代码。






以下是关于故事化描述,用于辅助理解。不必太过在意。



Claptrap Design 是 Claptrap Factory 进行 Claptrap 生产的重要依据。在 Design 中记录了对特定种类 Claptrap 所需要配备的定制化装置。例如:决定多功能任务处理器中的任务执行模组;决定手持型备忘录的设备型号;决定内存恢复控制器的恢复策略。



在决定 Claptrap 投产之前,设计好 Claptrap Design 是确保最终产物符合需求的重要一环。






Claptrap Factory 组装 Claptrap



Claptrap 拥有较高的可定制性。开发者可以为 Claptrap 对象指定自定义的 Event Loader/ Event Saver/ State Loader / State Saver / EventNotification Method 等等一系列组件。为了适应这种可定制性,故而需要选用良好的方案来实现 Claptrap 对象的装配。



目前框架选用的是 Autofac 作为装配器来完成。主要原因是 Autofac 支持 Delegate Factory / Decorator / Generic Type / Module 等等一些相较于 System.DepenedencyInjection 更丰富的特性。



Claptrap Factory 控制 Claptrap 生命周期



由于 Claptrap Factory 是 Claptrap 的生产者,因此一般也负责 Claptrap 级的生命周期控制功能。在基于 Autofac 实现的 Claptrap Factory,这种生命周期控制就体现在使用 Autofac 的 LifetimeScope 对象来控制整个装载、创建和卸载的过程。






以下是关于故事化描述,用于辅助理解。不必太过在意。



Claptrap Factory 是进行 Claptrap 进行生产的主要场所。它将依照给定的 Claptrap Design 对每一个出厂的 Claptrap 执行定制化装配,而它拥有着极高的产品合格率和工作效能。






最后但是最重要!



最近作者正在构建以反应式Actor模式事件溯源为理论基础的一套服务端开发框架。希望为开发者提供能够便于开发出 “分布式”、“可水平扩展”、“可测试性高” 的应用系统 ——Newbe.Claptrap



本篇文章是该框架的一篇技术选文,属于技术构成的一部分。如果读者对该内容感兴趣,欢迎转发、评论、收藏文章以及项目。您的支持是促进项目成功的关键。



联系方式:





您还可以查阅本系列的其他选文:



理论入门篇



  1. Newbe.Claptrap - 一套以 “事件溯源” 和 “Actor 模式” 作为基本理论的服务端开发框架

  2. Newbe.Claptrap 项目周报 1 - 还没轮影,先用轮跑



术语介绍篇



  1. Actor 模式

  2. 事件溯源(Event Sourcing)

  3. Claptrap

  4. Minion

  5. 事件 (Event)

  6. 状态 (State)

  7. 状态快照 (State Snapshot)

  8. Claptrap 设计图 (Claptrap Design)

  9. Claptrap 工厂 (Claptrap Factory)

  10. Claptrap Identity

  11. Claptrap Box

  12. Claptrap 生命周期(Claptrap Lifetime Scope)

  13. 序列化(Serialization)



实现入门篇



  1. Newbe.Claptrap 框架入门,第一步 —— 创建项目,实现简易购物车

  2. Newbe.Claptrap 框架入门,第二步 —— 简单业务,清空购物车



样例实践篇



  1. 构建一个简易的火车票售票系统,Newbe.Claptrap 框架用例,第一步 —— 业务分析



其他番外篇



  1. 谈反应式编程在服务端中的应用,数据库操作优化,从 20 秒到 0.5 秒

  2. 谈反应式编程在服务端中的应用,数据库操作优化,提速 Upsert

  3. 十万同时在线用户,需要多少内存?——Newbe.Claptrap 框架水平扩展实验

  4. docker-mcr 助您全速下载 dotnet 镜像



GitHub 项目地址:https://github.com/newbe36524/Newbe.Claptrap



Gitee 项目地址:https://gitee.com/yks/Newbe.Claptrap



您当前查看的是先行发布于 www.newbe.pro 上的博客文章,实际开发文档随版本而迭代。若要查看最新的开发文档,需要移步 claptrap.newbe.pro







发布于: 2020 年 08 月 12 日阅读数: 45
用户头像

newbe36524

关注

开源项目作者,独立博客维护者 2020.06.02 加入

newbe36524 是一名开发工程师。newbe 是 newbe36524 的个人技术博客。秉承 now everyone will be excellent 的 slogan 希望为开发者们分享自己的开发经验和心路历程。

评论

发布
暂无评论
Newbe.Claptrap 框架如何实现 Claptrap 的多样性?