1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/kklldog-AgileConfig

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
dsd
Loading...
README_EN.md

AgileConfig

Проект-член сообщества .NET Core Статус GitHub Workflow Количество звезд GitHub Дата последнего коммита NuGet версия Скачивание клиента NuGet Изображение Docker Лицензия GitHub

Английский | Китайский | Это легковесный центр конфигураций, основанный на .NET Core. Установка проста, система легко изучается и используется.

Возможности

  1. Легкая установка (Docker или IIS)
  2. Поддержка распределённой установки
  3. Поддержка нескольких окружений
  4. Изменения в конфигурациях вступают в силу сразу же
  5. Поддержка паттернов IConfiguration, IOptions для чтения конфигураций
  6. RESTful API
  7. Управление версиямиПример проекта: AgileConfig Сервер Пример имя пользователя: admin пароль: 123456
    клиентский проект: AgileConfig_Client
    примеры:
    AgileConfigMVCSample
    AgileConfig WPFSample
    AgileConfig ConsoleSampleAPI:
    RESTful API

Журнал изменений

Журнал изменений

Архитектура

Архитектура

Клиент

Клиентская библиотека .NET для чтения конфигураций с серверного узла.

Узел

Узел — это просто приложение .NET Core. Клиент подключается к узлу для чтения конфигураций. Любой узел может быть административной консолью для управления конфигурациями.

База данных

AgileConfig может использовать множество баз данных для хранения конфигураций.
dbprovider:
sqlserver = SqlServer
mysql = MySql
sqlite = Sqlite
npgsql = PostgreSql
oracle = Oracle

Использование

Запустите узел

sudo docker run \
--name agile_config \
-e TZ=Asia/Shanghai \
-e adminConsole=true \
-e db__provider=sqlite \
-e db__conn="Data Source=agile_config.db" \
-p 5000:5000 \
-v /etc/localtime:/etc/localtime \
#-v /ваш_хостовой_каталог:/app/db \
-d kklldog/agile_config:latest

Используйте клиента

Установите библиотеку клиента с помощью NuGet:

Install-Package AgileConfig.Client

Добавьте секцию agileconfig в файл appsettings.json:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*"
}
```  //agile_config
  "AgileConfig": {
    "appId": "app",
    "secret": "xxx",
    "nodes": "http://localhost:5000,http://localhost:5001",
    "name": "client_name",
    "tag": "tag1",
    "env": "dev"
  }
}

appsettings.json

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration((context, config) =>
        {
            //по умолчанию appsettings.json
            config.AddAgileConfig(arg => Console.WriteLine($"Конфигурация изменена, действие: {arg.Action}, ключ: {arg.Key}"));
        })
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        });
  -----или-----
  
   public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .UseAgileConfig(e => Console.WriteLine($"конфигурации {e.Action}"))
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });

appsettings.{env}.json

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration((context, config) =>
        {
            var envName = context.HostingEnvironment.EnvironmentName;
            var configClient = new ConfigClient($"appsettings.{envName}.json");
            config.AddAgileConfig(configClient, arg => Console.WriteLine($"Конфигурация изменена, действие: {arg.Action}, ключ: {arg.Key}"));
        })
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        });
```## Чтение конфигурации```c#
public class HomeController : Controller
{
    private readonly ILogger<HomeController> _logger;
    private readonly IConfiguration _configuration;
    private readonly IOptions<DbConfigOptions> _dbOptions;

    public HomeController(ILogger<HomeController> logger, IConfiguration configuration, IOptions<DbConfigOptions> dbOptions)
    {
        _logger = logger;
        _configuration = configuration;
        _dbOptions = dbOptions;
    }

    public IActionResult Index()
    {
        return View();
    }

    /// <summary>
    /// Чтение данных с помощью IConfiguration
    /// </summary>
    /// <returns></returns>
    public IActionResult ByIConfiguration()
    {
        var userId = _configuration["userId"];
        var dbConn = _configuration["db:connection"];

        ViewBag.userId = userId;
        ViewBag.dbConn = dbConn;

        return View();
    }

    /// <summary>
    /// Чтение данных с помощью Options
    /// </summary>
    /// <returns></returns>
    public IActionResult ByOptions()
    {
        var dbConn = _dbOptions.Value.connection;
        ViewBag.dbConn = dbConn;

        return View("ByOptions");
    }
}

Инъекция зависимостей

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddAgileConfig();
    }
}
public class HomeController : Controller
{
    private readonly IConfigClient _configClient;

    public HomeController(IConfigClient configClient)
    {
        _configClient = configClient;
    }

    public IActionResult Index()
    {
        return View();
    }

    /// <summary>
    /// Чтение данных с помощью IConfigClient
    /// </summary>
    /// <returns></returns>
    public IActionResult ByIConfigClient()
    {
        var userId = _configClient["userId"];
        var dbConn = _configClient["db:connection"];

        foreach (var item in _configClient.Data)
        {
            Console.WriteLine($"{item.Key} = {item.Value}");
        }

        ViewBag.userId = userId;
        ViewBag.dbConn = dbConn;

        return View();
    }
}
```## Скриншоты
![](https://ftp.bmp.ovh/imgs/2021/04/44242b327230c5e6.png)   
![](https://ftp.bmp.ovh/imgs/2021/04/7e93011590c55d12.png)   
![](https://ftp.bmp.ovh/imgs/2021/04/a48014f02ced6804.png)    
![](https://ftp.bmp.ovh/imgs/2021/04/8ae7d8bfcef72518.png)   
![](https://ftp.bmp.ovh/imgs/2021/04/74fbc7f1daab5deb.png)   
![](https://ftp.bmp.ovh/imgs/2021/04/9f38d55804e858d5.png)   

## Донат
Если данный проект был полезен вам, пожалуйста, используйте QR-код ниже для покупки чашки кофе.  
<img src="https://ftp.bmp.ovh/imgs/2021/07/c0146fa995e8074d.jpg" width="300">  
<img src="https://ftp.bmp.ovh/imgs/2021/07/1c8748c5732b8fbe.jpg" width="300">## благодарю 💖💖💖  
Да Пин ¥66.66, Шоу Цзао ¥6.66 + 88, Жиана ¥10.00, Нуллабл ¥9.99, Сан ¥6.66, ХХМ ¥6.66, Ю ¥6.66, Улыбающийся убийца ¥6.66, Фэй Нiao Yu ¥38.88, Ханг ¥9.90, Ла ¥6.66, Хай ¥6.66, Дыкс Дэн Ян Си ¥30

## связаться со мной
почта: minj.zhou@gmail.com  
группа QQ: 1022985150

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Лёгкий распределённый центр конфигурации, разработанный на основе .NET Core / Лёгкий сервер конфигурации на базе .NET Core. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/kklldog-AgileConfig.git
git@api.gitlife.ru:oschina-mirror/kklldog-AgileConfig.git
oschina-mirror
kklldog-AgileConfig
kklldog-AgileConfig
master