| 패키지 | 최신 릴리스 |
|---|---|
| configurationservice.hosting | |
| configurationservice.client |
구성 서비스는 .NET 용 분산 구성 서비스입니다. 애플리케이션, 서비스 및 컨테이너화 된 마이크로 서비스 차량의 구성은 재조정하거나 다시 시작할 필요없이 즉시 업데이트 할 수 있습니다. 구성 서비스는 클라이언트/서버 펍/하위 아키텍처를 사용하여 가입 된 클라이언트에게 발생할 때 변경 사항을 알립니다. IOptions , IOptionsMonitor 또는 IOptionsSnapshot 사용하여 표준 옵션 패턴을 사용하여 구성을 주입 할 수 있습니다.
구성 서비스는 현재 GIT, 파일 시스템 또는 금고 백엔드를 사용하여 호스팅 구성을 지원하며 Redis, NATS 또는 RabbitMQ 게시/구독으로 변경 사항을 지원합니다. 지원되는 파일 유형은 .json, .yaml, .xml 및 .ini입니다.
ConfigurationBuilder 패턴을 사용하여 .NET Standard 2.0 응용 프로그램에 쉽게 통합됩니다.IOptionsMonitor 또는 IOptionsSnapshot 으로 구성을 주입하십시오. 구성 서비스를 설치하는 가장 쉬운 방법은 NUGET을 사용하는 것입니다.
Visual Studio의 패키지 관리자 콘솔에서 다음 명령을 입력하십시오.
섬기는 사람:
Install-Package ConfigurationService.Hosting
고객:
Install-Package ConfigurationService.Client
구성 서비스 호스트 미들웨어를 기존 ASP.NET 응용 프로그램의 서비스 컬렉션에 추가 할 수 있습니다. 다음 예제는 Redis 게시자와 함께 GIT 스토리지 제공 업체를 구성합니다.
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 호출하십시오. 기본 패턴은 "/configuration"입니다.
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 ;
} )
.. . | 재산 | 설명 |
|---|---|
| Serveruri | 포트가있는 Vault Server URI. |
| 길 | KV 비밀 엔진이 활성화 된 경로. |
| 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 ( ) ) ; Configuration Service 클라이언트는 표준 구성 빌더에 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 | HttpClient 에 대한 선택적 HttpMessageHandler . |
| 요청 타임 아웃 | 구성 서버에 대한 HttpClient 요청의 시간 초과. 기본값은 60 초입니다. |
| loggerfactory | 유형은 로깅 시스템을 구성하고 ILogger 인스턴스를 작성하는 데 사용됩니다. 기본값은 NullLoggerFactory 로 나타납니다. |
| addConfiguration | 개별 구성 파일을 추가합니다. |
| configurationName | 구성 제공자와 관련된 구성 파일의 경로 또는 이름. 이 값은 configuration/ 엔드 포인트에 의해 리턴 된 목록에 지정된 값과 일치해야합니다. |
| 선택 과목 | 파일로드가 선택 사항인지 결정합니다. |
| ReloadonChange | 기본 파일이 변경되면 소스가로드 될지 여부를 결정합니다. |
| 파서 | 원격 구성 파일을 구문 분석하는 데 사용되는 유형입니다. 클라이언트는 지정되지 않은 경우 ConfigurationName 의 파일 확장에서이를 해결하려고 시도합니다.지원 유형 :
|
| AddRedissubscriber | Redis를 구성 가입자로 추가합니다. |
| AddnatsSubscriber | nats를 구성 가입자로 추가합니다. |
| AddRabbitMQsubscriber | RabbitMQ를 구성 가입자로 추가합니다. |
| AddSubscriber | 사용자 정의 구성 가입자 implements ISubscriber 추가합니다. |
| AddLoggerFactory | 로깅 시스템을 구성하고 ILogger 인스턴스를 작성하는 데 사용되는 유형을 추가합니다. |
호스트 및 클라이언트 구현의 샘플은 샘플에서 볼 수 있습니다.