| طَرد | أحدث إصدار |
|---|---|
| التكوينات | |
| التكوينات |
خدمة التكوين هي خدمة تكوين موزعة لـ .NET. يمكن تحديث تكوين أساطيل التطبيقات والخدمات والخدمات الدقيقة الحاوية على الفور دون الحاجة إلى إعادة نشر أو إعادة التشغيل. تستخدم خدمة التكوين بنية عميل/خادم/SUB لإخطار العملاء المشتركين بتغييرات التكوين عند حدوثها. يمكن حقن التكوين باستخدام نمط الخيارات القياسية مع IOptions أو IOptionsMonitor أو IOptionsSnapshot .
تدعم خدمة التكوين حاليًا استضافة التكوين باستخدام GIT أو نظام الملفات أو الخلفية قبو ودعم تغييرات النشر مع Redis أو NATS أو RABBITMQ Publish/اشتراك. أنواع الملفات المدعومة هي .json و. yaml و .xml و .ini.
ConfigurationBuilder القياسي.IOptionsMonitor أو IOptionsSnapshot للوصول إلى تغييرات التكوين. أسهل طريقة لتثبيت خدمة التكوين مع Nuget.
في وحدة التحكم في Manager Package Manager في 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} - يسترجع محتويات الملف المحدد. | ملكية | وصف |
|---|---|
| مستودع | URI للمستودع البعيد. |
| اسم المستخدم | اسم المستخدم للمصادقة. |
| كلمة المرور | كلمة المرور للمصادقة. |
| فرع | اسم الفرع إلى الخروج. عندما لا يتم تحديد الفرع الافتراضي لجهاز التحكم عن بُعد بدلاً من ذلك. |
| محلي | المسار المحلي لاستنساخ في. |
| SearchPattern | سلسلة البحث لاستخدامها كمرشح مقابل أسماء الملفات. الافتراضات لعدم وجود مرشح (*). |
| PollingInterval | الفاصل الزمني للتحقق من التغييرات عن بُعد. الإعدادات الافتراضية إلى 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 ) ;
}
.. . | ملكية | وصف |
|---|---|
| طريق | مسار إلى ملفات التكوين. |
| SearchPattern | سلسلة البحث لاستخدامها كمرشح مقابل أسماء الملفات. الافتراضات لعدم وجود مرشح (*). |
| يشمل التوجيه | يشمل الدليل الحالي وجميع الدلائل الفرعية. الإعدادات الافتراضية إلى false . |
| اسم المستخدم | اسم المستخدم للمصادقة. |
| كلمة المرور | كلمة المرور للمصادقة. |
| اِختِصاص | مجال للمصادقة. |
services . AddConfigurationService ( )
. AddFileSystemProvider ( c =>
{
c . Path = "C:/config" ;
c . SearchPattern = "*.json" ;
c . IncludeSubdirectories = true ;
} )
.. . | ملكية | وصف |
|---|---|
| Serveruri | خادم Vault URI مع المنفذ. |
| طريق | المسار الذي يتم فيه تمكين محرك KV Secrets. |
| Authmethodinfo | طريقة المصادقة لاستخدامها لاكتساب رمز قبو. |
| PollingInterval | الفاصل الزمني للتحقق من إجراء التغييرات عن بُعد. الإعدادات الافتراضية إلى 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 | يضيف ملف التكوين الفردي. |
| configurationName | مسار أو اسم ملف التكوين بالنسبة لمزود التكوين. يجب أن تتطابق هذه القيمة مع القيمة المحددة في القائمة التي يتم إرجاعها بواسطة نقطة configuration/ النهاية. |
| خياري | يحدد ما إذا كان تحميل الملف اختياريًا. |
| realoadonchange | يحدد ما إذا كان سيتم تحميل المصدر إذا تغير الملف الأساسي. |
| محلل | النوع المستخدم لتحليل ملف التكوين عن بُعد. سيحاول العميل حل هذا من ملحق ملف ConfigurationName إذا لم يتم تحديده.الأنواع المدعومة:
|
| addredissubscriber | يضيف redis كمشترك للتكوين. |
| addnatssubscriber | يضيف NATS كمشترك التكوين. |
| addRabbitMqSubscriber | يضيف RabbitMQ كمشترك للتكوين. |
| إضافة ubsistriber | يضيف مشترك تكوين مخصص يقوم بتنفيذ ISubscriber . |
| addloggerfactory | يضيف النوع المستخدم لتكوين نظام التسجيل وإنشاء مثيلات من ILogger . |
يمكن الاطلاع على عينات من تطبيقات المضيف والعميل في العينات.