using GFramework.Core.Abstractions.Architectures; using GFramework.Core.Abstractions.Command; using GFramework.Core.Abstractions.Events; using GFramework.Core.Abstractions.Ioc; using GFramework.Core.Abstractions.Query; using GFramework.Core.Ioc; using GFramework.Core.Services; namespace GFramework.Core.Architectures; /// /// 架构服务类,提供依赖注入容器、事件系统、命令总线和查询总线等核心服务。 /// 该类负责管理架构运行所需的核心组件,并提供统一的服务访问接口。 /// public class ArchitectureServices : IArchitectureServices { private readonly IServiceModuleManager _moduleManager; private IArchitectureContext _context = null!; /// /// 构造函数,初始化架构服务。 /// 初始化依赖注入容器,并创建事件总线、命令执行器、查询执行器和异步查询执行器的实例, /// 然后将这些服务注册到容器中。 /// public ArchitectureServices() { Container = new MicrosoftDiContainer(); _moduleManager = new ServiceModuleManager(); } /// /// 获取服务模块管理器实例。 /// 服务模块管理器用于管理架构中的服务模块,支持模块的动态加载和卸载。 /// public IServiceModuleManager ModuleManager => _moduleManager; /// /// 获取依赖注入容器。 /// 该容器用于管理架构中所有服务的生命周期和依赖关系。 /// public IIocContainer Container { get; } /// /// 获取事件总线实例。 /// 事件总线用于在架构中发布和订阅事件,实现组件间的松耦合通信。 /// public IEventBus EventBus => Container.Get()!; /// /// 获取命令执行器实例。 /// 命令执行器用于处理命令请求,执行业务逻辑。 /// public ICommandExecutor CommandExecutor => Container.Get()!; /// /// 获取查询执行器实例。 /// 查询执行器用于处理同步查询请求,获取数据或状态信息。 /// public IQueryExecutor QueryExecutor => Container.Get()!; /// /// 获取异步查询执行器实例。 /// 异步查询执行器用于处理异步查询请求,支持非阻塞的数据获取操作。 /// public IAsyncQueryExecutor AsyncQueryExecutor => Container.Get()!; /// /// 设置架构上下文。 /// /// 要设置的架构上下文实例。 public void SetContext(IArchitectureContext context) { _context = context; Container.SetContext(context); } /// /// 获取当前架构上下文。 /// /// 当前的架构上下文实例。 public IArchitectureContext GetContext() { return _context; } }