Newbe.Claptrap 框架如何實現在多種框架之上運行?

  • 2020 年 8 月 18 日
  • 筆記

Newbe.Claptrap 框架如何實現在多種框架之上運行?最近整理了一下項目的術語表。今天就談談什麼是 Claptrap Box。

特別感謝 kotone 為本文提供的校對建議!

Newbe.Claptrap 是一個用於輕鬆應對並發問題的分散式開發框架。如果您是首次閱讀本系列文章。建議可以先從本文末尾的入門文章開始了解。

Claptrap Box 使 Claptrap 能夠運行在更多框架之上

Claptrap 是基於 Actor 模式實現的一種對象。其僅具備處理事件和狀態控制相關的能力。因此,在實際場景中,往往需要依託於具體的運行環境來承載它,或者需要根據業務來設計對外的業務介面。

最典型的用例,就是與 Orleans 的 Grain 進行結合。Grain 是 Orleans 的虛擬 Actor 實現,而 Claptrap 也是 Actor。在 Claptrap 和 Grain 結合時,我們選擇將 Claptrap 封裝在 Grain 內部。這樣,我們就使得 Claptrap 這種結合了事件溯源的 Actor 運行在 Grain 中,這就可以充分利用 Orleans 支援分散式的特點。當我們將 Claptrap 放入到 Grain 中運行時,可以將 Grain 看做是一個盒子,這種對象的組合方式非常類似於設計模式中的門面模式,Grain 為 Claptrap 提供了一個門面與外部進行通訊,屏蔽內部細節的同時也使得外部更理解其交互方式。此處我們將這種 「將 Claptrap 裝入到特定門面對象中運行的方式」 稱為 Claptrap Box 模式,而其中的門面對象被稱為 Claptrap Box 。有了這種方式的存在,才使得 Claptrap 能夠應用於更加複雜的平台和業務。在 Orleans 中,這種 Claptrap Box 則被稱為 ClaptrapBoxGrain。

由於 Claptrap Box 的存在,Claptrap 即使脫離了 Orleans 也可以保持事件溯源和 Actor 模式的基本條件。例如在簡單的控制台程式中,開發者仍然可以使用 NormalClaptrapBox 來作為門面對象。然而這就失去了 Orleans 分散式的優勢。

依託 Claptrap Box 概念的存在,使得 Claptrap 能夠在更多的基礎平台和框架之上運行。雖然目前僅有 Orleans / Akka.net/ 無承載 等可以選用的門面對象。


以下是關於故事化描述,用於輔助理解。不必太過在意。

Claptrap 是一種可訂製化程度很高的機器人。為了能夠讓 Claptrap 在更繽紛複雜的環境下運行,需要針對不同的實際環境設計一些可以裝載 Claptrap 的載具,以便它們能夠完美地運行。例如:在海底工作的 Claptrap 需要配備足夠承受水壓的載具;在沼澤工作的 Claptrap 需要配備防陷防潮的載具;在火山口附近工作的 Claptrap 則需要配備耐高溫材料製成的載具。這一系列的載具,我們統稱為 Claptrap Box 。這是因為這些載具都有一個共同的特點,它們都是全包裹式的盒裝,當然形狀各異,但是我們統稱為 Box 。有了這些載具,Claptrap 便可以良好的運行在各種不同的環境中。

最後但是最重要!

最近作者正在構建以反應式Actor模式事件溯源為理論基礎的一套服務端開發框架。希望為開發者提供能夠便於開發出 「分散式」、「可水平擴展」、「可測試性高」 的應用系統 ——Newbe.Claptrap

本篇文章是該框架的一篇技術選文,屬於技術構成的一部分。如果讀者對該內容感興趣,歡迎轉發、評論、收藏文章以及項目。您的支援是促進項目成功的關鍵。

聯繫方式:

您還可以查閱本系列的其他選文:

理論入門篇

  1. Newbe.Claptrap – 一套以 「事件溯源」 和 「Actor 模式」 作為基本理論的服務端開發框架

術語介紹篇

  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 框架用例,第一步 —— 業務分析
  2. 在線體驗火車票售票系統

其他番外篇

  1. 談反應式編程在服務端中的應用,資料庫操作優化,從 20 秒到 0.5 秒
  2. 談反應式編程在服務端中的應用,資料庫操作優化,提速 Upsert
  3. 十萬同時在線用戶,需要多少記憶體?——Newbe.Claptrap 框架水平擴展實驗
  4. docker-mcr 助您全速下載 dotnet 鏡像
  5. 十多位全球技術專家,為你獻上近十個小時的.Net 微服務介紹

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

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

您當前查看的是先行發佈於 www.newbe.pro 上的部落格文章,實際開發文檔隨版本而迭代。若要查看最新的開發文檔,需要移步 claptrap.newbe.pro

Newbe.Claptrap