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 的每個細節,常見的包括:
- 採用什麼樣的 Event Loader / Event Saver 來處理事件。
- 多久儲存一次 State 快照。
- Minion ,如果是,那麼 Master 是誰。
- 有多少種事件,對應的 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
本篇文章是該框架的一篇技術選文,屬於技術構成的一部分。如果讀者對該內容感興趣,歡迎轉發、評論、收藏文章以及專案。您的支援是促進專案成功的關鍵。
聯絡方式:
- Github Issue
- Gitee Issue
- 公開郵箱[email protected](傳送到該郵箱的內容將被公開)
- Gitter
- QQ 群 610394020
您還可以查閱本系列的其他選文:
理論入門篇
術語介紹篇
- Actor 模式
- 事件溯源(Event Sourcing)
- Claptrap
- Minion
- 事件 (Event)
- 狀態 (State)
- 狀態快照 (State Snapshot)
- Claptrap 設計圖 (Claptrap Design)
- Claptrap 工廠 (Claptrap Factory)
- Claptrap Identity
- Claptrap Box
- Claptrap 生命週期(Claptrap Lifetime Scope)
- 序列化(Serialization)
實現入門篇
樣例實踐篇
其他番外篇
- 談反應式程式設計在服務端中的應用,資料庫操作優化,從 20 秒到 0.5 秒
- 談反應式程式設計在服務端中的應用,資料庫操作優化,提速 Upsert
- 十萬同時線上使用者,需要多少記憶體?——Newbe.Claptrap 框架水平擴充套件實驗
- docker-mcr 助您全速下載 dotnet 映象
GitHub 專案地址:https://github.com/newbe36524/Newbe.Claptrap
Gitee 專案地址:https://gitee.com/yks/Newbe.Claptrap
您當前檢視的是先行釋出於www.newbe.pro上的部落格文章,實際開發文件隨版本而迭代。若要檢視最新的開發文件,需要移步claptrap.newbe.pro。
- 本文作者:newbe36524
- 本文連結:https://www.newbe.pro/Newbe.Claptrap/Claptrap-Design-And-Claptrap-Factory/
- 版權宣告:本部落格所有文章除特別宣告外,均採用BY-NC-SA許可協議。轉載請註明出處!