using GFramework.Core.Abstractions.Architectures; using GFramework.Cqrs.Abstractions.Cqrs; namespace GFramework.Core.Abstractions.Cqrs; /// /// 定义架构上下文使用的 CQRS runtime seam。 /// 该抽象把请求分发、通知发布与流式处理从具体实现中解耦, /// 使 不再直接依赖某个固定的 runtime 类型。 /// public interface ICqrsRuntime { /// /// 发送请求并返回响应。 /// /// 响应类型。 /// 当前架构上下文,用于上下文感知处理器注入与嵌套请求访问。 /// 要分发的请求。 /// 取消令牌。 /// 请求响应。 ValueTask SendAsync( IArchitectureContext context, IRequest request, CancellationToken cancellationToken = default); /// /// 发布通知到所有已注册处理器。 /// /// 通知类型。 /// 当前架构上下文,用于上下文感知处理器注入。 /// 要发布的通知。 /// 取消令牌。 /// 表示通知分发完成的值任务。 ValueTask PublishAsync( IArchitectureContext context, TNotification notification, CancellationToken cancellationToken = default) where TNotification : INotification; /// /// 创建流式请求的异步响应序列。 /// /// 流元素类型。 /// 当前架构上下文,用于上下文感知处理器注入。 /// 流式请求。 /// 取消令牌。 /// 按需生成的异步响应序列。 IAsyncEnumerable CreateStream( IArchitectureContext context, IStreamRequest request, CancellationToken cancellationToken = default); }