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

Newbe36524發表於2020-08-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 專案地址:https://github.com/newbe36524/Newbe.Claptrap

Gitee 專案地址:https://gitee.com/yks/Newbe.Claptrap

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

Newbe.Claptrap

相關文章