Table of Contents

内核选型

一份插件契约,五种运行内核——按插件的运行环境归属选择:谁来跑插件的运行环境、 谁来管它的依赖与生命周期。不引用对应内核可选包=该模式结构化拒绝(装载期报错, 不是静默失败)。

内核谱系

内核 mode 运行环境归属 适合
ALC(缺省) Assembly 宿主归平台——CLR 共享宿主+SDK 桥 C# 插件主通道;性能最敏感面
WASM Wasm 标准自持(WASI 胶水) 强沙箱/多语言 guest(fuel 计量+epoch 中断+内存限额)
gRPC Grpc 全自持(平台只写通信) 进程外独立服务(ext_proc 同型运行器)
Script Script 零自持(API 面全自定义) 轻逻辑/在线脚本(Jint+Fluid 双轨)
子进程容器 Subprocess 进程级隔离(PluginHost 瘦 exe 承载) 租户 C# 场景包——独立进程边界+六面 IPC 全代理

选型决策

问 答 → 选
是 C# 且要最好性能? ALC(进程内直调,槽位零序列化)
guest 是 Rust/Go/其他 WASM 目标语言? WASM
插件是独立部署的服务(多语言/独立伸缩/独立故障域)? gRPC
逻辑很轻、要在线热更脚本? Script
租户自带 C# 包、要求进程级隔离(平台托管宿主进程)? Subprocess

能力兑现差异(声明×内核矩阵)

能力键(state.kv/net.call/…)按内核分三档兑现:

  • Hosted——宿主提供:ALC 全量;WASM 经 import 注册;各内核的 headers/query 投影门;
  • SelfHosted——自持设计域:gRPC 运行器进程自管 kv/events/net/metrics/trace+后台任务 (声明合法、平台不代管);
  • Unsupported——该内核不支持该能力键:装载拒绝,或清单 degradedCapabilities 逐键显式确认降级。

没有静默忽略:能力声明×内核的不匹配在装载期 fail-fast。

传输与压缩

  • gRPC:unary 与流复用(ProcessStream)双传输——流复用省连接建立(大载荷 slots_codec=json+gzip);
  • WASM:traffic-v1 JSON ABI(UTF-8 字节流,非字符串);
  • 槽位/settings 值面四内核统一按声明裁剪投递(K2 值面)。

内核包的引用形态

内核运行时是可选包:ALC 内核在平台核心内;WASM/gRPC/Script/Subprocess 是独立 可选包——部署不引用=对应 mode 的插件装载结构化拒绝(fail-fast),其余能力照常。