Graft 把應用程式當作一棵外掛樹來執行。本頁為各個部分命名,每一列都連結到詳細說明的頁面。
| 概念 |
說明 |
延伸閱讀 |
| Plugin |
描述如何啟動某項功能的值。 |
外掛 |
| Fork |
外掛的一個執行實例,擁有自己的設定和 Scope。 |
生命週期 |
| Service |
帶有值的 Effect Context 鍵,在執行期間發布和撤回。 |
服務 |
| Event |
具型別的標記。處理函式屬於註冊它的外掛。 |
事件 |
| Realm |
決定 fork 能看到哪些服務和事件的邊界。 |
領域 |
| Intercept |
對某個 fork 及其所有子孫修改 Context.Reference。 |
Intercept |
| Entry |
graft.yml 中的一行,載入一個外掛。 |
設定檔 |
| Loader |
把項目清單轉成 fork,並在設定被編輯時保持兩者同步。 |
Loader API |
- 外掛被載入成 fork。同一個外掛載入兩次,會得到兩個獨立的 fork。
- fork 可以發布服務,也可以注入其他 fork 發布的服務。
- fork 可以載入子外掛。父外掛停止時,子外掛也會停止。
- 領域和 intercept 決定 fork 及其子外掛能看到什麼。
- 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。