Об этом проекте
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 реализует двухфазный жизненный цикл:
1. **Build**: Создание отдельных ресурсов (например, `AddProject`, `AddRedis`)
2. **Configure**: Связывание ресурсов через ссылки, привязки и межресурсные связи
Включение управляет активацией ресурсов:
- `IsEnabled`: Сохраняемый переключатель, обычно получаемый из сгенерированных параметров
- `IsResourceEnabled(builder)`: Перехватчик выполнения для оценки среды, конфигурации или режима публикации
Если ресурс оценивается как отключенный, оба этапа (Build и Configure) полностью пропускаются.
## Сгенерированные артефакты
На основе объявлений `[HostKit]` и `[ResourceDefinition]` генератор исходного кода создает:
- Базовый класс ресурса хоста
- Свойства ресурсов на хосте
- Параметры на уровне хоста и для каждого ресурса (при включении)
- Метод расширения AppHost для построения, настройки и регистрации хост-набора
## Навыки агента
Пакет может включать [Agent Skills](https://agentskills.io/) через файлы `skills/**/SKILL.md`. Во время сборки они копируются в `.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)
- [Примеры: сгенерированные и ручные](docs/wiki/Examples.md)
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.