In .NET Aspire si possono inserire un'enorme quantità di progetti, servizi, applicazioni, tutte perfettamente elencate e gestite all'interno della dashboard. Ma al momento non esiste nessun sistema di archiviazione o categorizzazione delle risorse in modo da facilitarne la visione all'interno dell'interfaccia.
Sarebbe ottimale avere degli extension method che permettano la creazione in primis di un gruppo a cui dare un nome e poi associare una risorsa al gruppo appena creato.
var apiGroup = builder.AddGroup("nome-gruppo-api");
builder.AddProject<Projects.MioProgetto>("mio-progetto")
.InGroup(apiGroup);Come anticipato questo codice non funzionerà, perchè fisicamente non implementato nella piattaforma, ma essendo .NET Aspire completamente personalizzabile, possiamo creare i metodi necessari per gestire l'interfaccia utente e dunque permettere la compilazione della soluzione.
static class AspireHostingExtensions
{
public static IResourceBuilder<Resource> AddGroup
(this IDistributedApplicationBuilder builder, string name) =>
builder.AddResource(new GroupResource(name))
.WithInitialState(new()
{
State = new(KnownResourceStates.Running, KnownResourceStateStyles.Success),
ResourceType = "Group",
Properties = []
});
public static IResourceBuilder<T> InGroup<T>(this IResourceBuilder<T> builder,
IResourceBuilder<IResource> group)
where T : IResource
{
if (builder.Resource.TryGetAnnotationsOfType<ResourceSnapshotAnnotation>(out var annot))
{
foreach (var snapshot in annot)
{
snapshot.InitialSnapshot.GetType().GetProperty("Properties")?.SetValue(snapshot.InitialSnapshot,
snapshot.InitialSnapshot.Properties.Add(new("resource.parentName", "data")));
}
}
else
{
builder.WithInitialState(new()
{
ResourceType = builder.Resource.GetType().Name ?? "Unknown",
Properties =
[
new("resource.parentName", group.Resource.Name),
]
});
}
return builder;
}
class GroupResource(string name) : Resource(name)
{
}
}Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Evitare memory leaks nelle closure JavaScript
Configurare OpenAI in .NET Aspire
Personalizzare i parametri del CSS Scroll Snap
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Gestione ciclo di vita in .NET Aspire
Gestire codice JavaScript con code splitting e lazy loading
Eseguire query in contemporanea con EF
Ospitare n8n su Azure App Service
Integrare Agenti A2A in Azure API Management
Eliminare record doppi in Sql Server
Definire il colore di una scrollbar HTML tramite CSS
Utilizzare il Null conditional assignment di C# 14




