Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

.NET Fest 2018. Алексей Бороденко. Dynamic behavior of Options pattern

11 views

Published on

Любое приложение требует конфигурации, которая может быть как простой, используя файл с сеттингами, так и многоступенчатой, когда задействованы удаленные источники (база данных, key/value хранилище). В первую очередь Options паттерн предоставляет строготипизированный доступ к сеттингам и такие продвинутые возможности как гибкость слияния, подстановки сеттингов на различных этапах конфигурации приложения. Понимание каким образом происходит регистрация инфраструктуры на которой базируется Options, позволит нам динамически расширять конфигурацию приложения без изменения исходного кода библиотек. Изучение низкоуровневого механизма для отслеживания изменения настроек приложения позволяет перестраивать его поведение не только через DI, а также в статических классах. Кроме того, мы рассмотрим интеграцию Options с одним из микросервисных паттернов известным как сервис дискавери который позволит придать динамику конфигурационным параметрам и менять их в райнтайме без релоада самого приложения.

Published in: Education
  • Be the first to comment

  • Be the first to like this

.NET Fest 2018. Алексей Бороденко. Dynamic behavior of Options pattern

  1. 1. Тема доклада Тема доклада Тема доклада KYIV 2018 Dynamic behaviour of Options pattern .NET CONFERENCE #1 IN UKRAINE Alexey Borodenko Tech Lead, N-iX
  2. 2. Тема доклада Тема доклада Тема доклада .NET LEVEL UP Agenda .NET CONFERENCE #1 IN UKRAINE KYIV 2018 • Configuration management available in the .NET Framework • Introduction to Options pattern • registration • extensibility points • Configuration providers • configuration primitives • Managing Options with Singleton/Scoped lifetime instances • Custom reloadable configuration provider • Summary
  3. 3. t .NET LEVEL UP KYIV 2018 .NET Applications Configuration app.cofig, web.config, machine.config ConfigurationSection, ConfigurationElement, ConfigurationProperty, ConfigurationSectionCollection, ConfigurationSectionGroup, IConfigurationSectionHandlerConfiguration / Configuration Manager (magic strings)
  4. 4. Тема доклада Тема доклада Тема доклада .NET LEVEL UP Configuration Builders (.NET 4.7.1) .NET CONFERENCE #1 IN UKRAINE KYIV 2018 <?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="configBuilders" type="System.Configuration.ConfigurationBuildersSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" restartOnExternalChanges="false" requirePermission="false"/> </configSections> <configBuilders> <builders> <add name="Environment" Mode="Greedy" Prefix="APPSETTING_" StripPrefix="true" type="Microsoft.Configuration.ConfigurationBuilders.EnvironmentConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.Environment, Version=1.0.0.0, Culture=neutral"/> </builders> </configBuilders> <appSettings configBuilders="Environment"> <add key="RabbitMqHost" value="localhost:5673"/> </appSettings> </configuration> • EnvironmentConfigBuilder – Read from environment variables • AzureKeyVaultConfigBuilder – Read from Azure Key Vault • UserSecretsConfigBuilder – Read from a usersecrets file on disk, similar to the ASP.NET Core functionality • SimpleJsonConfigBuilder – Read from a JSON file
  5. 5. Тема доклада Тема доклада Тема доклада .NET LEVEL UP Options .NET CONFERENCE #1 IN UKRAINE KYIV 2018 • definition and constraints • types • registration IConfigureOptions<in TOptions> where TOptions : class IOptionsSnapshot<out TOptions> : IOptions<TOptions> where TOptions : class, new() IConfigureNamedOptions<in TOptions> : IConfigureOptions<TOptions> where TOptions : classIOptionsMonitor<out TOptions> IPostConfigureOptions<in TOptions> where TOptions : class
  6. 6. t .NET LEVEL UP KYIV 2018 OptionsServiceCollectionExtensions
  7. 7. t .NET LEVEL UP KYIV 2018 Options Constructions (OptionsFactory)
  8. 8. t .NET LEVEL UP KYIV 2018 Demo Enhancement configuration without code modifications based on an example FluentMigrator
  9. 9. Тема доклада Тема доклада Тема доклада .NET LEVEL UP Configuration Providers .NET CONFERENCE #1 IN UKRAINE KYIV 2018
  10. 10. t .NET LEVEL UP KYIV 2018 Demo Adding dynamic behavior to static class to modify logging level based on example Serilog
  11. 11. Тема доклада Тема доклада Тема доклада .NET LEVEL UP IOptionsMonitor/IOptionsSnapshot .NET CONFERENCE #1 IN UKRAINE KYIV 2018
  12. 12. t .NET LEVEL UP KYIV 2018 Demo Managing options of singleton HttpClientFactory
  13. 13. t .NET LEVEL UP KYIV 2018 Demo Implementation custom configuration provider (Consul) with reloadable configuration
  14. 14. Тема доклада Тема доклада Тема доклада .NET LEVEL UP Summary .NET CONFERENCE #1 IN UKRAINE KYIV 2018 • flexible and extensible configuration of application using Options; • how to build reloadable options with change notifications; • custom configuration providers with reloadable settings;
  15. 15. Тема доклада Тема доклада Тема доклада .NET LEVEL UP Resources .NET CONFERENCE #1 IN UKRAINE KYIV 2018 https://github.com/aspnet/Options.git https://github.com/aspnet/Configuration.git https://github.com/aspnet/Diagnostics https://github.com/aspnet/Common.git https://github.com/aspnet/HttpClientFactory.git https://github.com/PlayFab/consuldotnet https://github.com/TerraVenil/DotNetFest2018.git
  16. 16. .NET LEVEL UP .NET CONFERENCE #1 IN UKRAINE KYIV 2018

×