using IntegrationGateway.Core.Infrastructure; using IntegrationGateway.Adapters.Owl; using IntegrationGateway.Adapters.MC4; using IntegrationGateway.Host; var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllers(); builder.Services.AddMemoryCache(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddHttpClient("VolPro", c => { c.BaseAddress = new Uri(builder.Configuration["VolProBaseUrl"] ?? "http://localhost:9100"); }); builder.Services.AddSingleton(); var app = builder.Build(); app.MapControllers(); // 启动时自动向 Vol.Pro 注册 app.Lifetime.ApplicationStarted.Register(() => { Task.Run(async () => { var gw = app.Services.GetRequiredService(); var registry = app.Services.GetRequiredService(); // 注册 Owl 适配器 var owlCfg = builder.Configuration.GetSection("Owl"); var owlHttp = app.Services.GetRequiredService().CreateClient("VolPro"); var owlAdapter = new OwlAdapter( "Owl:main", owlHttp, owlCfg["BaseUrl"] ?? "http://localhost:15123", owlCfg["Username"] ?? "admin", owlCfg["Password"] ?? "admin" ); registry.Register(owlAdapter); // 注册 MC4 适配器 var mc4Cfg = builder.Configuration.GetSection("MC4"); var mc4Http = app.Services.GetRequiredService().CreateClient("VolPro"); var mc4Adapter = new Mc4Adapter( "MC4:31ku", mc4Http, mc4Cfg["BaseUrl"] ?? "http://localhost:3000" ); registry.Register(mc4Adapter); try { var result = await gw.RegisterAsync(); Console.WriteLine($"[Gateway] Registered as NodeId={result?.NodeId}, Devices={result?.Devices.Count ?? 0}"); } catch (Exception ex) { Console.WriteLine($"[Gateway] Registration failed: {ex.Message}"); } }); }); app.Run();