跳到內容

核心概念

Graft 把應用程式當作一棵外掛樹來執行。本頁為各個部分命名,每一列都連結到詳細說明的頁面。

概念 說明 延伸閱讀
Plugin 描述如何啟動某項功能的值。 外掛
Fork 外掛的一個執行實例,擁有自己的設定和 Scope。 生命週期
Service 帶有值的 Effect Context 鍵,在執行期間發布和撤回。 服務
Event 具型別的標記。處理函式屬於註冊它的外掛。 事件
Realm 決定 fork 能看到哪些服務和事件的邊界。 領域
Intercept 對某個 fork 及其所有子孫修改 Context.Reference。 Intercept
Entry graft.yml 中的一行,載入一個外掛。 設定檔
Loader 把項目清單轉成 fork,並在設定被編輯時保持兩者同步。 Loader API
  1. 外掛被載入成 fork。同一個外掛載入兩次,會得到兩個獨立的 fork。
  2. fork 可以發布服務,也可以注入其他 fork 發布的服務。
  3. fork 可以載入子外掛。父外掛停止時,子外掛也會停止。
  4. 領域和 intercept 決定 fork 及其子外掛能看到什麼。
  5. fork 的程式碼通常在應用程式行程裡執行。透過 Remote,它也可以在子行程、worker 或另一台機器上執行,而它的服務仍然照常在應用程式中發布和注入。
保證 來源
相依項目經過宣告並受檢查 inject 由編譯器檢查。
消費者先於提供者停止 服務撤回流程。
資源一定會釋放 每個 fork 擁有一個 Scope;任務屬於 FiberSet。
失敗保留完整的 Cause fork 狀態、錯誤。
取代是原子的,新外掛啟動失敗時回滾 取代外掛。

Graft 不另造一套詞彙,而是直接對應到 Effect:

在 Graft 中 在 Effect 中
外掛啟動 在 Scope 中執行的 Effect
服務 Context 鍵
外掛設定 Schema
背景任務 由 FiberSet 持有的 Fiber
重試 Schedule
基於 Reference 的設定 Context.Reference

Graft 只補上 Effect 沒有的部分:可在執行期間出現和消失的服務、外掛樹、事件、設定檔和熱重載。讓外掛程式碼遵循這些對應關係的習慣,請見外掛中的 Effect。

我想要… 閱讀
馬上執行一些東西 快速開始
撰寫外掛 外掛
了解外掛為何沒有執行 生命週期
不寫程式碼就設定應用程式 設定檔
了解某個錯誤名稱 錯誤
讓外掛在另一個行程中執行 Remote
規劃應用程式的各個部分 設計應用程式