using Microsoft.AspNetCore.Builder;
namespace MAX.Framework.Interfaces
{
///
/// 业务模块:把「服务注册」和「管道装配」两件事都交给模块自己,
/// 由宿主的两行代码统一驱动(模块不需要出现在 Program.cs 里):
///
/// - builder.AddStoreHub() → 自动发现所有模块并执行 (服务注册阶段,Build() 之前);
/// - app.UseStoreHubModules() → 自动执行 (管道阶段,Build() 之后、Run() 之前)。
///
/// 模块实例由反射创建,因此实现类必须有无参构造函数。
///
public interface IModule
{
///
/// 模块执行顺序(数值越大越先执行),默认 。
/// 两个阶段都按这个顺序执行。
///
int Priority => MAX.Core.Interfaces.IntPriority.Normal;
///
/// 服务注册阶段(builder.Build() 之前):注册本模块的服务、选项、后台任务类型。
/// 需要读配置时用 ,不要再去碰 builder。
///
void AddModule(ModuleContext context);
///
/// 管道装配阶段(builder.Build() 之后、app.Run() 之前):
/// 注册中间件(如 Hangfire 看板)、Map 端点、读取 解析服务、注册启动任务等。
/// 不需要管道装配的模块可以不实现(默认空实现)。
///
void UseModule(WebApplication app)
{
}
}
}