用途:在 .NET 服务或 API 中,用显式结果对象表达成功与失败,替代异常、null 和临时元组,使服务边界与 API 边界更可预测。
主要能力:核心类型为 Result、Result<T>、CollectionResult<T> 和 Problem;支持铁路式(railway)组合,逐步执行并在首个真实失败处停止;CollectionResult<T> 配合 PaginationRequest/PaginationOptions 承载分页元数据;可将应用错误映射为 RFC 7807 problem details、Minimal API 结果、SignalR 过滤器或 Orleans 调用过滤器。v10.2.2 为 ICommandExecutor 增加有界重试/退避与抖动、整体超时、熔断、限流、幂等、OpenTelemetry 信号及 IHttpClientFactory 弹性处理器;Task 与 ValueTask 路径对称。
使用方式:按边界安装对应包,如 dotnet add package ManagedCode.Communication、ManagedCode.Communication.AspNetCore、ManagedCode.Communication.Extensions、ManagedCode.Communication.Orleans(当前审阅版本 v10.2.2)。ASP.NET Core 用 ConfigureCommunication() 配置日志与转换器;Minimal API 用 WithCommunicationResults() 对端点或分组做结果转换;仅在确实使用 Orleans 或 SignalR 运行时过滤器时引入对应包。
适用场景:服务结果契约、应用管理器边界、将结果翻译为 HTTP 响应的 API 端点,以及需要统一分页与错误契约的接口。
限制与注意:结果对象应留在服务/API 边界,不要把框架相关 HTTP 结果泄漏进领域代码;不要用通用成功包装隐藏领域失败;重试需保持单一重试所有者、遵守 Retry-After 并要求副作用幂等;Orleans 命令执行需配置 commandStore grain 存储并显式调用 UseOrleansCommandExecution();ValueTask 仅用于频繁同步完成且只消费一次的操作。集成后需验证成功、失败与错误路径,以及分页元数据稳定性。