Lo script di questa settimana tratta una nuova funzionalità offerta da Universal Windows Platform, ovvero gli Application Service. Gli Application Service offrono un set di API che permettono a due app installate sullo stesso dispositivo di comunicare tra di loro, in una sorta di modalità client server. Grazie agli Application Service, Microsoft è riuscita a combinare le potenzialità dei background task alla semplicità di utilizzo dei web service, rendendo possibile l'utilizzo dei BackgroundTask di WinRT come provider di servizi per altre applicazioni installate sul device. Il codice per effettuare una chiamata ad un background task esposto come ApplicationService è il seguente:
private async Task InitializeConnection()
{
AppServiceConnection appServiceConnection = new AppServiceConnection
{
// Es: com.aspitalia.appservice.Giancarlo
AppServiceName = "service-unique-name",
// Es: 292c6a2f-3028-412d-b530-23fbc868d2cb_8gdmnpqbw06hm
PackageFamilyName = "app-package-name"
};
var status = await appServiceConnection.OpenAsync();
if(status == AppServiceConnectionStatus.Success)
{
var message = new ValueSet() { { "Item-1", "GetOrders" } };
var response = await appServiceConnection.SendMessageAsync(message);
if(response.Status == AppServiceResponseStatus.Success)
{
foreach (var item in response.Message)
{
Debug.WriteLine($"{item.Key}: {item.Value}");
}
}
}
}Il codice risulta chiaro è molto simile a quello che scriviamo per una normale chiamata http, tuttavia ciò su cui bisogna fare attenzione è la parte di inizializzazione dell'oggetto AppServiceConnection. In uno scenario reale l'AppServiceName rappresenta il nome univoco assegnato all'istanza del background task che espone il servizio, mentre invece il PackageFamilyName è un identificativo univoco della nostra app che è necessario conoscere o ricavare.
È possibile recuperare questo identificativo fondamentalmente in due modi:
- Tramite il Windows Store se la nostra app è già stata pubblicata;
- Durante il deploy della nostra app. Tutto ciò che ci basta fare è rimuovere la versione e la piattaforma (_1.0.0.0_x86_) dal full package name (Es: ad5ff53a-7ccc-4f70-b0c2-6b909bba77a0_1.0.0.0_x86__kj4a6z6kv5v3p) che Visual Studio stampa durante la fase di deploy nella console di output.
Una volta in possesso di queste due informazioni siamo pronti per parlare con il servizio inviandoli dei messaggi codificati sotto forma di ValueSet. Nel caso in cui la chiamata vada a buon fine, possiamo leggere l'output tramite il ValueSet rappresentato dalla proprietà Messages all'interno della response.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Arricchire l'interfaccia di .NET Aspire
Filtrare i dati in ASP.NET Core usando OpenTelemetry su Azure Monitor
Logica Graceful Degradation in HTML e CSS
Escludere alcuni file da GitHub Copilot
Evitare la compressione degli artefatti in un workflow di GitHub
Semplificare la gestione dei modelli con Azure AI Foundry Model Router
How to be a DevOps engineer in the AI era
Keynote .NET Conference Italia 2025
Monitorare le tabelle di Azure SQL Database con Change Event Streaming
Sfruttare la funzione REGEXP_COUNT di Sql Server per contare i record che corrispondono a una certa regular expression
Dallo sviluppo locale ad Azure con .NET Aspire
Leggere il contenuto di un file zip tramite le classi del namespace System.IO.Compression
I più letti di oggi
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Accedere a risorse e immagini in Windows Store app di Windows 8
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Permettere il Drag-and-drop solo su zone predefinite con Silverlight 2.0
- Consumare dati binari in realtime lato client con ASP.NET Core SignalR
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit
- Personalizare l'icona e le funzionalità di un sito web per iOS e IE
- Caricamenti veloci da CDN e fallback locale con ASP.NET Core
- Utilizzare dati in formato XML in XAML
- Accedere a dati esposti con WebService con Silverlight 1.0


