Files
caliverse_server/BrokerApiServer/Program.cs
2025-05-01 07:23:28 +09:00

64 lines
2.1 KiB
C#

using System.Reflection;
using BrokerApiServer;
using CommandLine;
using ControlCenter.NamedPipeHost.Extensions;
using ServerCore;
//=============================================================================
// 인자 설정
//=============================================================================
var port = 12000;
var use_swagger = false;
var parsed_arguments = Parser.Default.ParseArguments<CommandLineOption>(args);
if (parsed_arguments is Parsed<CommandLineOption> parsed)
{
port = parsed.Value.Port;
use_swagger = parsed.Value.UseSwagger ? true : false;
}
var cmd_options = new string[] { "--urls", $"http://*:{port}" };
var builder = WebApplication.CreateBuilder(cmd_options);
builder.addAppServices();
builder.Services.AddHttpContextAccessor();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddControllers(options => { options.Filters.Add(new ResultExceptionFilter()); });
builder.Services.AddHealthChecks();
builder.Services.AddSwaggerGen(SwaggerSettingHelper.setSwaggerGen);
var assemblies = new List<Assembly>(AppDomain.CurrentDomain.GetAssemblies());
builder.Services.AddNamedPipelineClientManager(assemblies, ServerControlCenter.ServerType.BrokerApi,
ServiceCategory.Caliverse.ToString(), NetworkHelper.getEthernetLocalIPv4(), port);
var app = builder.Build();
app.UseCors("Everything");
app.UseHttpsRedirection();
app.UseMiddleware<ResultLoggingMiddleware>();
app.UseAuthorization();
app.UseRouting();
app.MapControllers();
if (use_swagger)
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.MapHealthChecks("/healthcheck");
app.validateRepoConnections();
app.brokerServerLogicInit();
// todo: 스키마 변경 시 자동으로 앱에서 마이그레이션 하지 않고, dotnet ef 툴을 사용할 것
// app.metadataMangerInit();
app.Services.GetRequiredService<IHostApplicationLifetime>().ApplicationStarted.Register(() =>
{
Log.getLogger().info($"Env : {app.Environment.EnvironmentName}");
Log.getLogger().info($"BrokerApiServer started {app.Urls}");
});
app.Services.GetRequiredService<IHostApplicationLifetime>().ApplicationStopped.Register(Log.shutdown);
app.UseNamedPipelineClientManager();
app.Run();