| บรรจุุภัณฑ์ | รุ่นล่าสุด |
|---|---|
| configurationservice.hosting | |
| configurationservice.client |
บริการกำหนดค่าเป็นบริการกำหนดค่าแบบกระจายสำหรับ. NET การกำหนดค่าสำหรับกองยานแอปพลิเคชันบริการและบริการไมโครคอนเทนเนอร์สามารถอัปเดตได้ทันทีโดยไม่จำเป็นต้องปรับใช้หรือรีสตาร์ท บริการการกำหนดค่าใช้ไคลเอนต์/เซิร์ฟเวอร์ผับ/สถาปัตยกรรมย่อยเพื่อแจ้งลูกค้าที่สมัครรับการเปลี่ยนแปลงการกำหนดค่าตามที่เกิดขึ้น การกำหนดค่าสามารถฉีดได้โดยใช้รูปแบบตัวเลือกมาตรฐานด้วย IOptions , IOptionsMonitor หรือ IOptionsSnapshot
ปัจจุบันบริการการกำหนดค่ารองรับการกำหนดค่าโฮสติ้งด้วย GIT ระบบไฟล์หรือแบ็กเอนด์ Vault และรองรับการเปลี่ยนแปลงการเผยแพร่ด้วย REDIS, NATS หรือ RABBITMQ เผยแพร่/สมัครสมาชิก ประเภทไฟล์ที่รองรับคือ. json, .yaml, .xml และ .ini
ConfigurationBuilder มาตรฐาน BuilderIOptionsMonitor หรือ IOptionsSnapshot เพื่อเข้าถึงการเปลี่ยนแปลงการกำหนดค่า วิธีที่ง่ายที่สุดในการติดตั้งบริการการกำหนดค่าคือกับ NUGET
ในคอนโซล Package Manager ของ Visual Studio ให้ป้อนคำสั่งต่อไปนี้:
เซิร์ฟเวอร์:
Install-Package ConfigurationService.Hosting
ลูกค้า:
Install-Package ConfigurationService.Client
มิดเดิลแวร์โฮสต์บริการกำหนดค่าสามารถเพิ่มลงในคอลเลกชันบริการของแอปพลิเคชัน ASP.NET ที่มีอยู่ ตัวอย่างต่อไปนี้กำหนดค่าผู้ให้บริการจัดเก็บข้อมูล Git กับ Redis Publisher
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 สำหรับที่เก็บระยะไกล |
| ชื่อผู้ใช้ | ชื่อผู้ใช้สำหรับการรับรองความถูกต้อง |
| รหัสผ่าน | รหัสผ่านสำหรับการรับรองความถูกต้อง |
| สาขา | ชื่อของสาขาเพื่อชำระเงิน เมื่อไม่ระบุสาขาเริ่มต้นของระยะไกลจะถูกใช้แทน |
| ธรณีแลง | เส้นทางท้องถิ่นเพื่อโคลนเข้าไป |
| SearchPattern | สตริงการค้นหาที่จะใช้เป็นตัวกรองกับชื่อของไฟล์ ค่าเริ่มต้นถึงไม่มีตัวกรอง (*) |
| การสำรวจความคิดเห็น | ช่วงเวลาที่จะตรวจสอบการเปลี่ยนแปลงระยะไกล ค่าเริ่มต้นถึง 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 ;
} )
.. . | คุณสมบัติ | คำอธิบาย |
|---|---|
| เซิร์ฟเวอร์ | Vault Server URI พร้อมพอร์ต |
| เส้นทาง | เส้นทางที่เปิดใช้งานเครื่องยนต์ KV Secrets |
| Authmethodinfo | วิธีการรับรองความถูกต้องที่จะใช้เพื่อรับโทเค็นห้องนิรภัย |
| การสำรวจความคิดเห็น | ช่วงเวลาที่จะตรวจสอบสำหรับการเปลี่ยนแปลงระยะไกล ค่าเริ่มต้นถึง 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 ( ) ; | คุณสมบัติ | คำอธิบาย |
|---|---|
| บริการ | จุดสิ้นสุดบริการกำหนดค่า |
| httpmessageHandler | HttpMessageHandler เสริมสำหรับ HttpClient |
| requesttimeout | การหมดเวลาสำหรับคำขอ HttpClient ไปยังเซิร์ฟเวอร์การกำหนดค่า ค่าเริ่มต้นถึง 60 วินาที |
| loggerfactory | ประเภทที่ใช้ในการกำหนดค่าระบบการบันทึกและสร้างอินสแตนซ์ของ ILogger ค่าเริ่มต้นเป็น NullLoggerFactory |
| addConfiguration | เพิ่มไฟล์การกำหนดค่าแต่ละรายการ |
| กำหนดค่าชื่อ | พา ธ หรือชื่อของไฟล์กำหนดค่าที่สัมพันธ์กับผู้ให้บริการการกำหนดค่า ค่านี้ควรตรงกับค่าที่ระบุในรายการที่ส่งคืนโดย configuration/ จุดสิ้นสุด |
| ไม่จำเป็น | กำหนดว่าการโหลดไฟล์เป็นทางเลือกหรือไม่ |
| reloadonchange | กำหนดว่าแหล่งที่มาจะถูกโหลดหรือไม่หากไฟล์พื้นฐานเปลี่ยนไป |
| ตัวแยกวิเคราะห์ | ประเภทที่ใช้ในการแยกวิเคราะห์ไฟล์การกำหนดค่าระยะไกล ไคลเอนต์จะพยายามแก้ไขสิ่งนี้จากส่วนขยายไฟล์ของ ConfigurationName หากไม่ได้ระบุประเภทที่รองรับ:
|
| addredissubscriber | เพิ่ม Redis เป็นสมาชิกการกำหนดค่า |
| addnatssubscriber | เพิ่ม NATS เป็นสมาชิกการกำหนดค่า |
| addrabbitmqsubscriber | เพิ่ม RabbitMQ เป็นสมาชิกการกำหนดค่า |
| addsubscriber | เพิ่มสมาชิกการกำหนดค่าที่กำหนดเองสำหรับการดำเนินการ ISubscriber |
| addloggerFactory | เพิ่มประเภทที่ใช้ในการกำหนดค่าระบบการบันทึกและสร้างอินสแตนซ์ของ ILogger |
ตัวอย่างของการใช้งานทั้งโฮสต์และไคลเอนต์สามารถดูได้ในตัวอย่าง