SuperAPI AI 工具集

managedcode-orleans-graph

通用与其它

查看项目

更新于 10-16 00:05

技能介绍

用途:在基于 Orleans 的 .NET 应用中集成 ManagedCode.Orleans.Graph,用于 grain 调用策略强制执行、死锁检测、实时调用遥测,以及生成配置策略或实时调用的 Mermaid 图。若只是通用图数据遍历,应使用常规 Orleans grain 建模。

安装:dotnet add package ManagedCode.Orleans.Graph。上游包面向当前 .NET 10 / Orleans 10 技术栈,加入旧版 Orleans 应用前需先检查目标框架与 Orleans 包兼容性。

主要能力:在 silo 中通过 AddOrleansGraph(...) 注册过滤器;按源 grain 到目标 grain 及方法建模策略,先为客户端入口和 grain 间转换写显式允许规则;用 AllowAll() 观察模式发现真实流量;需要 Orleans 客户端参与调用历史跟踪时,用 clientBuilder.AddOrleansGraph() 注册客户端出站过滤器;可用特性把策略与 grain 契约放在一起;生成 Mermaid 图检查策略边。

使用方式:注册 silo 过滤器并配置策略,例如 AllowClientCallGrain<IOrderGrain>()、AddGrainTransition<IOrderGrain, IPaymentGrain>().Method(...).And()、AddGrain<IPaymentGrain>().WithReentrancy()。观察模式可设置 filters.LiveGraphFlushPeriod 并调用 graph.AllowAll(),随后通过 IOrleansGraphTelemetryGrain 的 GetObservedGraphAsync() 和 GenerateLiveMermaidDiagramAsync() 查看观测图。也可在 grain 契约上使用 [AllowClientCall]、[AllowGrainCall]、[AllowSelfReentrancy] 等特性。

限制与注意:AllowAll() 是观察/发现模式,不是最终生产策略;客户端发起的入口点需用 AllowClientCallGrain<T>() 显式允许;除非调试 Orleans.Graph 本身,TrackOrleansGraphInternalCalls 应保持关闭;RegisterGrainTimer 回调的源方法为 *,Reminder 回调源方法为 ReceiveReminder;运行时顶点使用精确图标识,客户端调用记为 ORLEANS_GRAIN_CLIENT,无法解析调用方时记为 UNKNOWN_CALLER;v10.0.3 修复了 reminder 与 timer 相关问题,升级时需重新测试这些来源。建议用真实 Orleans 运行时测试验证被阻止与允许的转换、自重入及运行时图诊断,并在生产强制前把观察结果转为经审核的策略。