| Kemasan | Rilis terbaru |
|---|---|
| Configurationservice.hosting | |
| Configurationservice.client |
Layanan Konfigurasi adalah layanan konfigurasi terdistribusi untuk .NET. Konfigurasi untuk armada aplikasi, layanan, dan layanan mikro yang dimasukkan dapat segera diperbarui tanpa perlu menggunakan kembali atau memulai kembali. Layanan Konfigurasi menggunakan arsitektur klien/server/sub arsitektur untuk memberi tahu klien yang berlangganan tentang perubahan konfigurasi saat terjadi. Konfigurasi dapat disuntikkan menggunakan pola opsi standar dengan IOptions , IOptionsMonitor atau IOptionsSnapshot .
Layanan konfigurasi saat ini mendukung konfigurasi hosting dengan GIT, sistem file atau vault backends dan mendukung perubahan penerbitan dengan Redis, NATS atau RabbitMQ Publish/Berlangganan. Jenis file yang didukung adalah .json, .yaml, .xml dan .ini.
ConfigurationBuilder standar.IOptionsMonitor atau IOptionsSnapshot untuk mengakses perubahan konfigurasi. Cara termudah untuk menginstal layanan konfigurasi adalah dengan Nuget.
Dalam konsol Paket Visual Studio, masukkan perintah berikut:
Server:
Install-Package ConfigurationService.Hosting
Klien:
Install-Package ConfigurationService.Client
Middleware host layanan konfigurasi dapat ditambahkan ke koleksi layanan aplikasi ASP.NET yang ada. Contoh berikut mengkonfigurasi penyedia penyimpanan git dengan penerbit Redis.
builder . Services . AddConfigurationService ( )
. AddGitProvider ( c =>
{
c . RepositoryUrl = "https://github.com/jamespratt/configuration-test.git" ;
c . LocalPath = "C:/local-repo" ;
} )
. AddRedisPublisher ( "localhost:6379" ) ; Di startup.configure, hubungi MapConfigurationService pada pembangun titik akhir. Pola default adalah "/konfigurasi".
app . UseEndpoints ( endpoints =>
{
endpoints . MapConfigurationService ( ) ;
} ) ;Host yang dikonfigurasi akan mengekspos dua titik akhir API:
configuration/ - Daftar semua file di penyedia yang dikonfigurasi.configuration/{filename} - Mengambil konten file yang ditentukan. | Milik | Keterangan |
|---|---|
| Repositoryurl | URI untuk repositori jarak jauh. |
| Nama belakang | Nama pengguna untuk otentikasi. |
| Kata sandi | Kata sandi untuk otentikasi. |
| Cabang | Nama cabang untuk checkout. Ketika tidak ditentukan, cabang default jarak jauh akan digunakan sebagai gantinya. |
| Lokal | Jalur lokal untuk dikloning ke. |
| SearchPattern | String pencarian untuk digunakan sebagai filter terhadap nama file. Default ke no filter (*). |
| PollingInterval | Interval untuk memeriksa perubahan jarak jauh. Default hingga 60 detik. |
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 ) ;
}
.. . | Milik | Keterangan |
|---|---|
| Jalur | Jalur ke file konfigurasi. |
| SearchPattern | String pencarian untuk digunakan sebagai filter terhadap nama file. Default ke no filter (*). |
| Termasuk sutradara | Termasuk direktori saat ini dan semua subdirektori. Default ke false . |
| Nama belakang | Nama pengguna untuk otentikasi. |
| Kata sandi | Kata sandi untuk otentikasi. |
| Domain | Domain untuk otentikasi. |
services . AddConfigurationService ( )
. AddFileSystemProvider ( c =>
{
c . Path = "C:/config" ;
c . SearchPattern = "*.json" ;
c . IncludeSubdirectories = true ;
} )
.. . | Milik | Keterangan |
|---|---|
| Serveruri | URI Server Vault dengan port. |
| Jalur | Jalur tempat mesin rahasia KV diaktifkan. |
| AUTHMETHODINFO | Metode auth yang akan digunakan untuk memperoleh token lemari besi. |
| PollingInterval | Interval untuk memeriksa perubahan jarak jauh. Default hingga 60 detik. |
services . AddConfigurationService ( )
. AddVaultProvider ( c =>
{
c . ServerUri = "http://localhost:8200/" ;
c . Path = "secret/" ;
c . AuthMethodInfo = new TokenAuthMethodInfo ( "myToken" ) ;
} )
.. . Implementasi khusus penyedia penyimpanan dan penerbit dapat ditambahkan dengan mengimplementasikan antarmuka IProvider dan IPublisher dan memanggil metode ekstensi yang sesuai pada AddConfigurationservice:
services . AddConfigurationService ( )
. AddProvider ( new CustomStorageProvider ( ) )
. AddPublisher ( new CustomPublisher ( ) ) ; Klien Layanan Konfigurasi dapat dikonfigurasi dengan menambahkan AddRemoteConfiguration ke pembangun konfigurasi standar. Dalam contoh berikut, konfigurasi JSON jarak jauh ditambahkan dan titik akhir Redis ditentukan untuk langganan perubahan konfigurasi. Konfigurasi lokal dapat dibaca untuk pengaturan untuk sumber jarak jauh dengan menggunakan beberapa contoh pembangun konfigurasi.
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 ( ) ; | Milik | Keterangan |
|---|---|
| Serviceuri | Titik akhir layanan konfigurasi. |
| HttpmessageHandler | HttpMessageHandler opsional untuk HttpClient . |
| RequestTimeout | Batas waktu untuk permintaan HttpClient ke server konfigurasi. Default hingga 60 detik. |
| LoggerFactory | Jenis yang digunakan untuk mengonfigurasi sistem logging dan membuat instance ILogger . Default ke NullLoggerFactory . |
| Tambahkan konfigurasi | Menambahkan file konfigurasi individual. |
| ConfigurationName | Jalur atau nama file konfigurasi relatif terhadap penyedia konfigurasi. Nilai ini harus cocok dengan nilai yang ditentukan dalam daftar yang dikembalikan oleh configuration/ titik akhir. |
| Opsional | Menentukan apakah memuat file adalah opsional. |
| Reloadonchange | Menentukan apakah sumber akan dimuat jika file yang mendasarinya berubah. |
| Parser | Jenis yang digunakan untuk menguraikan file konfigurasi jarak jauh. Klien akan mencoba menyelesaikan ini dari ekstensi file ConfigurationName jika tidak ditentukan.Jenis yang Didukung:
|
| AddRedisSubscriber | Menambahkan redis sebagai pelanggan konfigurasi. |
| AddNatsSubscriber | Menambahkan NATS sebagai pelanggan konfigurasi. |
| AddRabbitMQSubscriber | Menambahkan RabbitMQ sebagai pelanggan konfigurasi. |
| AddSubscriber | Menambahkan Pelanggan Konfigurasi Kustom ISubscriber . |
| AddloggerFactory | Menambahkan jenis yang digunakan untuk mengonfigurasi sistem logging dan membuat instance ILogger . |
Sampel implementasi host dan klien dapat dilihat pada sampel.