DocumentDB è il database documentale offerto dalla piattaforma Microsoft Azure per memorizzare, indicizzare e recuperare documenti JSON. L'infrastruttura supporta protocolli standard e dispone di SDK nei linguaggi più utilizzati del momento. Tra questi c'è anche C# e in generale .NET attraverso una libreria NuGet che ci permette facilmente di lavorare con DocumentDB.
La libreria client ci permette di lavorare sui documenti in maniera del tutto tipizzata lavorando sotto le quinte con JSON.NET, il quale si occupa automaticamente della serializzazione e della deserializzazione. Purtroppo la libreria non supporta ancora un modello aperto che ci permetta di personalizzare gli aspetti della serializzazione e ci troviamo quindi a dover scegliere tra due strade:
- Utilizzare le impostazioni globali di JSON.NET: la pratica può interferire con altri meccanismi in JSON utilizzati all'interno dell'applicazione, quindi è una soluzione poco efficace oltre che non elegante;
- Caricare manualmente lo stream JSON: ci occupiamo noi della serializzazione e deserializzazione grezza.
Questa seconda strada è oggetto di questo script. Per farlo, bastano pochi passi anche se vuol dire rinunciare alla comodità della totale trasparenza della conversione in JSON. Il metodo CreateDocumentAsync, infatti, oltre all'oggetto tipizzato, permette di passare un Resource
// Creo lo stream in memoria
using (var stream = new MemoryStream())
{
// Creo del finto json come stringa
var writer = new StreamWriter(stream);
writer.Write("{json:'test'}");
writer.Flush();
// Riporto lo stream all'inizio
stream.Position = 0;
// Creo il documento partendo dallo Stream
await client.CreateDocumentAsync(collectionLink, Resource.LoadFrom<Document>(stream));
}In questo modo abbiamo massima libertà nella serializzazione dei nostri oggetti, non dipendendo più da JSON.NET.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Ridurre il reflow ottimizzando il CSS
Integrare SQL Server in un progetto .NET Aspire
Le cron expression di un workflow di GitHub
Interagire con Azure DevOps tramite MCP Server
Gestione delle scrollbar dinamiche in HTML e CSS
Come automatizzare il download dei report di billing da GitHub Enterprise
Utilizzare Locust con Azure Load Testing
Rendere affidabile lo scale out su Azure App Service
Recuperare le subissue e il loro stato di completamento in GitHub
Testare il failover sulle region in Azure Storage
Gestire progetti .NET + React in .NET Aspire
Utilizzare @property per animare nativamente un oggetto HTML tramite CSS
I più letti di oggi
- Real Code Day 4.0: costruire applicazioni reali - Firenze
- Community Days 2012 Bari - Bari
- Speciale Windows Azure: la piattaforma di Microsoft per il cloud computing
- Presentato il Windows Store: ecco tutte le novità
- Wrox chiude per bancarotta
- Mono 1.0 nel 2004
- Due regali dal Tech-Ed USA 2004: WSE 2.0 e VS 2005 Team System
- .NET Compact Framework beta
- Rilasciata versione 1.1.17 di Mono




