| Упаковка | Последний релиз |
|---|---|
| ConfigurationService.hosting | |
| Configurationservice.client |
Служба конфигурации - это сервис распределенной конфигурации для .NET. Конфигурация для парков приложений, сервисов и контейнерных микро-сервисов может быть немедленно обновлена без необходимости перераспределения или перезапуска. Служба конфигурации использует паб клиента/сервера/суб -архитектуру, чтобы уведомлять подписанных клиентов о изменениях конфигурации по мере их возникновения. Конфигурация может быть введена с использованием стандартного шаблона параметров с IOptions , IOptionsMonitor или IOptionsSnapshot .
Служба конфигурации в настоящее время поддерживает конфигурацию хостинга с помощью GIT, файловой системы или Vault Backends и поддерживает публикацию изменений Redis, NATS или RabbitMQ Publish/подписки. Поддерживаются типы файлов .Json, .yaml, .xml и .ini.
ConfigurationBuilder .IOptionsMonitor или IOptionsSnapshot для доступа к изменениям конфигурации. Самый простой способ установить службу конфигурации - с Nuget.
В консоли менеджера пакетов Visual Studio введите следующую команду:
Сервер:
Install-Package ConfigurationService.Hosting
Клиент:
Install-Package ConfigurationService.Client
Промежуточное программное обеспечение для хоста службы конфигурации может быть добавлено в коллекцию служб существующего приложения ASP.NET. Следующий пример настраивает поставщика хранилища GIT с издателем Redis.
builder . Services . AddConfigurationService ( )
. AddGitProvider ( c =>
{
c . RepositoryUrl = "https://github.com/jamespratt/configuration-test.git" ;
c . LocalPath = "C:/local-repo" ;
} )
. AddRedisPublisher ( "localhost:6379" ) ; В startup.configure вызовите MapConfigurationService на строительном застройке конечных точек. Шаблон по умолчанию - «/конфигурация».
app . UseEndpoints ( endpoints =>
{
endpoints . MapConfigurationService ( ) ;
} ) ;Настроенный хост выставит две конечные точки API:
configuration/ - перечисляет все файлы у настроенного поставщика.configuration/{filename} - Получает содержимое указанного файла. | Свойство | Описание |
|---|---|
| Repositoryurl | URI для удаленного репозитория. |
| Имя пользователя | Имя пользователя для аутентификации. |
| Пароль | Пароль для аутентификации. |
| Ветвь | Название филиала для оформления заказа. В случае отсутствия филиала удаленного по умолчанию будет использоваться ветвь по умолчанию. |
| LocalPath | Местный путь к клону в. |
| Seckpattern | Строка поиска для использования в качестве фильтра против имен файлов. По умолчанию нет фильтра (*). |
| OplingInterval | Интервал для проверки на наличие удаленных изменений. По умолчанию до 60 секунд. |
services . AddConfigurationService ( )
. AddGitProvider ( c =>
{
c . RepositoryUrl = "https://example.com/my-repo/my-repo.git" ;
c . Username = "username" ;
c . Password = "password" ;
c . Branch = "main" ;
c . LocalPath = "C:/config" ;
c . SearchPattern = ".*json" ;
c . PollingInterval = TimeSpan . FromSeconds ( 60 ) ;
}
.. . | Свойство | Описание |
|---|---|
| Путь | Путь к файлам конфигурации. |
| Seckpattern | Строка поиска для использования в качестве фильтра против имен файлов. По умолчанию нет фильтра (*). |
| Включает в себя Ubdirectories | Включает текущий каталог и все его подкаталоги. По умолчанию false . |
| Имя пользователя | Имя пользователя для аутентификации. |
| Пароль | Пароль для аутентификации. |
| Домен | Домен для аутентификации. |
services . AddConfigurationService ( )
. AddFileSystemProvider ( c =>
{
c . Path = "C:/config" ;
c . SearchPattern = "*.json" ;
c . IncludeSubdirectories = true ;
} )
.. . | Свойство | Описание |
|---|---|
| Сервер | URI сервера Vault с портом. |
| Путь | Путь, по которому включен двигатель KV Secrets. |
| Authmethodinfo | Метод AUTH, который будет использоваться для получения токена хранилища. |
| OplingInterval | Интервал для проверки для удаленных изменений. По умолчанию до 60 секунд. |
services . AddConfigurationService ( )
. AddVaultProvider ( c =>
{
c . ServerUri = "http://localhost:8200/" ;
c . Path = "secret/" ;
c . AuthMethodInfo = new TokenAuthMethodInfo ( "myToken" ) ;
} )
.. . Пользовательские реализации поставщиков и издателей хранения могут быть добавлены путем реализации интерфейсов IProvider и IPublisher и вызыв соответствующие методы расширения на AddConfigurationservice:
services . AddConfigurationService ( )
. AddProvider ( new CustomStorageProvider ( ) )
. AddPublisher ( new CustomPublisher ( ) ) ; Клиент службы конфигурации может быть настроен, добавив AddRemoteConfiguration к стандартному конфигурации. В следующем примере добавляется удаленная конфигурация JSON, и для подписки на изменение конфигурации указана конечная точка REDIS. Локальная конфигурация может быть прочитана для настроек для удаленного источника с помощью нескольких экземпляров конфигурационного застройщика.
var loggerFactory = LoggerFactory . Create ( builder =>
{
builder . AddConsole ( ) ;
} ) ;
IConfiguration configuration = new ConfigurationBuilder ( )
. AddJsonFile ( "appsettings.json" , optional : false , reloadOnChange : true )
. Build ( ) ;
configuration = new ConfigurationBuilder ( )
. AddConfiguration ( configuration )
. AddRemoteConfiguration ( o =>
{
o . ServiceUri = "http://localhost:5000/configuration/" ;
o . AddConfiguration ( c =>
{
c . ConfigurationName = "test.json" ;
c . ReloadOnChange = true ;
c . Optional = false ;
} ) ;
o . AddConfiguration ( c =>
{
c . ConfigurationName = "test.yaml" ;
c . ReloadOnChange = true ;
c . Optional = false ;
c . Parser = new YamlConfigurationFileParser ( ) ;
} ) ;
o . AddRedisSubscriber ( "localhost:6379" ) ;
o . AddLoggerFactory ( loggerFactory ) ;
} )
. Build ( ) ; | Свойство | Описание |
|---|---|
| Serviceuri | Конечная точка службы конфигурации. |
| Httpmessagehandler | Дополнительный HttpMessageHandler для HttpClient . |
| RequestTimeout | Тайм -аут для запроса HttpClient на сервер конфигурации. По умолчанию до 60 секунд. |
| LoggerFactory | Тип, используемый для настройки системы журнала и создания экземпляров ILogger . По умолчанию в NullLoggerFactory . |
| AddConfiguration | Добавляет отдельный файл конфигурации. |
| Конфигурация | Путь или имя файла конфигурации относительно поставщика конфигурации. Это значение должно соответствовать значению, указанному в списке, возвращаемом configuration/ конечной точкой. |
| Необязательный | Определяет, является ли загрузка файла необязательна. |
| RELOADONCHANGE | Определяет, будет ли источник загружен, если изменяется базовый файл. |
| Анализатор | Тип, используемый для анализа файла удаленной конфигурации. Клиент попытается разрешить это из расширения файла ConfigurationName , если не указано.Поддерживаемые типы:
|
| Addredissubscriber | Добавляет Redis в качестве подписчика конфигурации. |
| Addnatssubscriber | Добавляет NAT в качестве подписчика конфигурации. |
| Addrabbitmqsubscriber | Добавляет Rabbitmq в качестве подписчика конфигурации. |
| Addsubscriber | Добавляет подписчик пользовательской конфигурации, внедряет ISubscriber . |
| Addloggerfactory | Добавляет тип, используемый для настройки системы журнала и создания экземпляров ILogger . |
Образцы реализаций хоста и клиента могут быть просмотрены на образцах.