Sobre el proyecto
Purview.Aspire.ResourceKit es un framework impulsado por generación de código fuente para estructurar la composición de recursos de .NET Aspire AppHost como clases fuertemente tipadas y fáciles de probar.
## Propósito
Cuando las aplicaciones AppHost crecen, mantener la configuración de recursos de forma mantenible y reconocible se vuelve un desafío. ResourceKit aborda esto trasladando la lógica de composición a clases de recursos enfocadas y generando automáticamente la infraestructura de conexión.
## Beneficios clave
- **Código AppHost más limpio**: la lógica de recursos se divide en clases dedicadas en lugar de métodos de configuración monolíticos
- **Tipado fuerte e IntelliSense**: reemplaza la configuración basada en cadenas por seguridad en tiempo de compilación
- **Cableado generado**: produce automáticamente opciones de host/recurso y código de registro
- **Ciclo de vida predecible**: sigue un patrón Build y luego Configure para gestionar dependencias entre recursos
- **Capacidad de prueba**: admite anulaciones de opciones y composición aislada de recursos para pruebas unitarias
## Modelo de uso
Defina un host kit y clases 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);
}
```
Luego regístrelo en el AppHost:
```csharp
var builder = DistributedApplication.CreateBuilder(args);
builder.AddAspireResourceKit();
```
Se genera un método de extensión a partir de los metadatos del host (por ejemplo, `AddAspireResourceKit()`).
## Ciclo de vida
ResourceKit implementa un ciclo de vida de dos fases:
1. **Build**: construye recursos individuales (por ejemplo, `AddProject`, `AddRedis`)
2. **Configure**: conecta recursos entre sí mediante referencias, enlaces y cableado entre recursos
Los controles de habilitación determinan cuándo se activan los recursos:
- `IsEnabled`: conmutador persistido que normalmente proviene de opciones generadas
- `IsResourceEnabled(builder)`: hook en tiempo de ejecución para evaluar el entorno, la configuración o el modo de publicación
Si un recurso se evalúa como deshabilitado, sus fases Build y Configure se omiten por completo.
## Artefactos generados
A partir de las declaraciones `[HostKit]` y `[ResourceDefinition]`, el generador de código fuente produce:
- Una clase base de recurso de host
- Propiedades de recurso en el host
- Opciones a nivel de host y por recurso (cuando están habilitadas)
- Un método de extensión de AppHost para construir, configurar y registrar el host kit
## Agent Skills
El paquete puede incluir [Agent Skills](https://agentskills.io/) mediante archivos `skills/**/SKILL.md`. Durante la compilación, estos se copian a `.agents/skills/` en el proyecto consumidor. Desactívelo con:
```xml
<EnableAgentFolderInPackage>false</EnableAgentFolderInPackage>
```
## Estructura del repositorio
- `src/src/ResourceKit`: código fuente del paquete de tiempo de ejecución
- `src/src/SourceGeneration`: generador de código fuente de Roslyn
- `src/src/Example.*`: aplicaciones Aspire de ejemplo
- `src/tests/*`: pruebas unitarias y de integración
## Documentación
- [Página principal](https://purview.dev/projects/aspire-resourcekit/)
- [Introducción](docs/wiki/Getting-Started.md)
- [Guía de ciclo de vida Build-Configure](docs/wiki/Lifecycle-Build-Configure.md)
- [Documentación de habilitación](docs/wiki/Enablement.md)
- [Configuración y opciones](docs/wiki/Configuration-and-Options.md)
- [Diagnóstico y solución de problemas](docs/wiki/Diagnostics.md)
- [Ejemplos: generado vs manual](docs/wiki/Examples.md)
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.