Sobre o projeto
Purview.Aspire.ResourceKit é uma estrutura baseada em gerador de código-fonte para estruturar a composição de recursos do .NET Aspire AppHost como classes fortemente tipadas e testáveis.
## Objetivo
Quando as aplicações AppHost crescem, manter a configuração de recursos sustentável e descobrível torna-se desafiador. O ResourceKit resolve isso movendo a lógica de composição para classes de recursos focadas e gerando automaticamente a infraestrutura.
## Principais benefícios
- **Código AppHost mais limpo**: a lógica de recursos divide-se em classes dedicadas em vez de métodos de configuração monolíticos
- **Tipagem forte e IntelliSense**: substitui a configuração baseada em strings por segurança em tempo de compilação
- **Ligação gerada**: produz automaticamente opções de host/recurso e código de registo
- **Ciclo de vida previsível**: segue um padrão Build e depois Configure para gerir dependências entre recursos
- **Testabilidade**: suporta substituições de opções e composição isolada de recursos para testes unitários
## Modelo de utilização
Defina um host kit e classes de recursos usando atributos:
```csharp
[HostKit]
partial class ShopHostKit;
[ResourceDefinition<ProjectResource>("api")]
partial class ApiResourceKit
{
protected override IResourceBuilder<ProjectResource> BuildResource(IDistributedApplicationBuilder builder)
=> builder.AddProject<Projects.Example_Service>(Name);
}
```
Depois registe no AppHost:
```csharp
var builder = DistributedApplication.CreateBuilder(args);
builder.AddAspireResourceKit();
```
Um método de extensão é gerado a partir dos metadados do seu host (por exemplo, `AddAspireResourceKit()`).
## Ciclo de vida
O ResourceKit implementa um ciclo de vida em duas fases:
1. **Build**: construir recursos individuais (por exemplo, `AddProject`, `AddRedis`)
2. **Configure**: ligar recursos entre si através de referências, bindings e ligação entre recursos
Os controlos de ativação determinam quando os recursos são ativados:
- `IsEnabled`: alternância persistida, normalmente obtida a partir de opções geradas
- `IsResourceEnabled(builder)`: hook de runtime para avaliar ambiente, configuração ou modo de publicação
Se um recurso for avaliado como desativado, tanto a sua fase Build como Configure são totalmente ignoradas.
## Artefactos gerados
A partir das declarações `[HostKit]` e `[ResourceDefinition]`, o gerador de código-fonte produz:
- Uma classe base de recurso de host
- Propriedades de recursos no host
- Opções ao nível do host e por recurso (quando ativadas)
- Um método de extensão do AppHost para construir, configurar e registar o host kit
## Agent Skills
O pacote pode incluir [Agent Skills](https://agentskills.io/) através de ficheiros `skills/**/SKILL.md`. Durante a compilação, estes são copiados para `.agents/skills/` no projeto consumidor. Desative com:
```xml
<EnableAgentFolderInPackage>false</EnableAgentFolderInPackage>
```
## Estrutura do repositório
- `src/src/ResourceKit`: código-fonte do pacote de runtime
- `src/src/SourceGeneration`: gerador de código-fonte Roslyn
- `src/src/Example.*`: aplicações Aspire de exemplo
- `src/tests/*`: testes unitários e de integração
## Documentação
- [Página inicial](https://purview.dev/projects/aspire-resourcekit/)
- [Introdução](docs/wiki/Getting-Started.md)
- [Guia Lifecycle-Build-Configure](docs/wiki/Lifecycle-Build-Configure.md)
- [Documentação de ativação](docs/wiki/Enablement.md)
- [Configuração e opções](docs/wiki/Configuration-and-Options.md)
- [Diagnóstico e resolução de problemas](docs/wiki/Diagnostics.md)
- [Exemplos: gerado vs manual](docs/wiki/Examples.md)
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.