# Configuration.SelfHost **Repository Path**: ymjake/configuration-selfhost ## Basic Information - **Project Name**: Configuration.SelfHost - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-19 - **Last Updated**: 2025-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # App Configuration SelfHost 一个基于 .NET 10 的本地化 App Configuration 平台,借鉴 Azure App Configuration 的交互模型,结合 Clean Architecture(Domain/Application/Infrastructure/WebApi/WebUi)与独立的配置提供程序,实现“本地配置中心 + Provider + UI”的闭环体验。 ## 快速开始 1. **构建解决方案** ```bash dotnet build AppConfiguration.SelfHost.sln ``` 2. **运行 WebApi** ```bash dotnet run --project src/WebApi/WebApi.csproj ``` 默认监听 `http://localhost:5258`,该地址同时提供 API 与打包后的 WebUi。 3. **访问管理界面** 浏览器打开 `http://localhost:5258`,即可通过 UI 创建 Key/Label/Tags、Feature Flags、Snapshots 等。 ## 在应用中使用 Provider ```csharp var builder = WebApplication.CreateBuilder(args); builder.Configuration.AddSelfHostAppConfiguration(options => { options.Endpoint = new Uri("http://localhost:5258/"); options.KeyFilter = "app:payments:*"; options.Label = "prod"; options.RefreshInterval = TimeSpan.FromSeconds(10); }); builder.Services.Configure( builder.Configuration.GetSection("app:payments:connection1::prod")); ``` `SelfHostConfigurationProvider` 会请求 `/configuration/key-values`,自动根据 `ContentType` 扁平化 JSON Value(生成 `key::label:child` 形式的键),因此可以直接通过 `ConfigurationBinder` 或 `GetConnectionString()` 读取配置。 示例项目 `samples/SelfHost.ConfigurationProvider.Sample` 提供了 `/payments/connection` 端点,展示如何在应用中读取并绑定 SelfHost 的 KeyValue。 ## 前端开发 ```bash cd src/WebUi/ClientApp npm install npm run dev # 调试 npm run build # 产出静态资源,由 WebApi 托管 ``` ## TODO 详见 `todo.md`,后续计划包括: - Snapshots/Revision/Rollback 端到端实现 - SSE/WebSocket 推送,替换当前轮询刷新 - Provider NuGet 包装与 README - 完善认证(API Key/HMAC/Entra ID)与审计日志 欢迎参与改进,自行在 GitHub Issues/PR 中交流。