프로젝트 소개
Purview.Aspire.ResourceKit은 .NET Aspire AppHost 리소스 구성을 강력한 형식의 테스트 친화적 클래스로 구조화하기 위한 소스 생성기 기반 프레임워크입니다.
## 목적
AppHost 애플리케이션이 커질수록 리소스 설정을 유지 관리하고 발견하기 쉽게 유지하는 것이 어려워집니다. ResourceKit은 구성 로직을 집중된 리소스 클래스로 옮기고 연결 코드를 자동으로 생성하여 이 문제를 해결합니다.
## 주요 이점
- **더 깔끔한 AppHost 코드**: 리소스 로직이 단일 설정 메서드 대신 전용 클래스로 분리됩니다
- **강력한 형식 및 IntelliSense**: 문자열 기반 구성을 컴파일 타임 안전성으로 대체합니다
- **생성된 연결**: 호스트/리소스 옵션과 등록 코드를 자동으로 생성합니다
- **예측 가능한 수명 주기**: 리소스 간 종속성 관리를 위해 Build 후 Configure 패턴을 따릅니다
- **테스트 용이성**: 단위 테스트를 위한 옵션 재정의와 격리된 리소스 구성을 지원합니다
## 사용 모델
특성을 사용하여 호스트 키트와 리소스 클래스를 정의합니다:
```csharp
[HostKit]
partial class ShopHostKit;
[ResourceDefinition<ProjectResource>("api")]
partial class ApiResourceKit
{
protected override IResourceBuilder<ProjectResource> BuildResource(IDistributedApplicationBuilder builder)
=> builder.AddProject<Projects.Example_Service>(Name);
}
```
그런 다음 AppHost에 등록합니다:
```csharp
var builder = DistributedApplication.CreateBuilder(args);
builder.AddAspireResourceKit();
```
확장 메서드는 호스트 메타데이터에서 생성됩니다(예: `AddAspireResourceKit()`).
## 수명 주기
ResourceKit은 2단계 수명 주기를 구현합니다:
1. **Build**: 개별 리소스 구성(예: `AddProject`, `AddRedis`)
2. **Configure**: 참조, 바인딩, 리소스 간 연결을 통해 리소스를 함께 연결
활성화 제어는 리소스가 활성화되는 시점을 결정합니다:
- `IsEnabled`: 일반적으로 생성된 옵션에서 제공되는 영구 토글
- `IsResourceEnabled(builder)`: 환경, 구성 또는 게시 모드를 평가하기 위한 런타임 후크
리소스가 비활성화로 평가되면 Build 및 Configure 단계가 모두 완전히 건너뜁니다.
## 생성된 아티팩트
`[HostKit]` 및 `[ResourceDefinition]` 선언에서 소스 생성기는 다음을 생성합니다:
- 호스트 리소스 기본 클래스
- 호스트의 리소스 속성
- 호스트 수준 및 리소스별 옵션(활성화된 경우)
- 호스트 키트를 빌드, 구성 및 등록하기 위한 AppHost 확장 메서드
## 에이전트 스킬
패키지는 `skills/**/SKILL.md` 파일을 통해 [에이전트 스킬](https://agentskills.io/)을 번들로 포함할 수 있습니다. 빌드 중에 이 파일들은 사용 프로젝트의 `.agents/skills/`로 복사됩니다. 비활성화하려면:
```xml
<EnableAgentFolderInPackage>false</EnableAgentFolderInPackage>
```
## 리포지토리 구조
- `src/src/ResourceKit`: 런타임 패키지 소스
- `src/src/SourceGeneration`: Roslyn 소스 생성기
- `src/src/Example.*`: 샘플 Aspire 애플리케이션
- `src/tests/*`: 단위 및 통합 테스트
## 문서
- [홈페이지](https://purview.dev/projects/aspire-resourcekit/)
- [시작하기](docs/wiki/Getting-Started.md)
- [수명 주기-Build-Configure 가이드](docs/wiki/Lifecycle-Build-Configure.md)
- [활성화 문서](docs/wiki/Enablement.md)
- [구성 및 옵션](docs/wiki/Configuration-and-Options.md)
- [진단 및 문제 해결](docs/wiki/Diagnostics.md)
- [예제: 생성됨 vs 수동](docs/wiki/Examples.md)
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.