Ho un'applicazione desktop WPF standalone che raccoglie dati da schede convertitore digitali-analogiche, calcola, analizza questi dati e crea quindi file binari (formato proprietario) con il risultato. C'è un ritmo di un record (fondamentalmente un dizionario con i dati ottenuti) aggiunto ogni secondo nel file di archiviazione finale.
Inoltre, questi dati in tempo reale devono essere disponibili per un'applicazione Web (che visualizza grafici in tempo reale) ospitati nel cloud di Azure. Quindi, forse, ovviamente, verrà utilizzata una memoria Azure Blob in cui verranno archiviati i file di archiviazione finali.
Lo scenario ideale è quello di aggiornare, appena possibile, l'applicazione web con il nuovo record calcolato su una macchina su cui è in esecuzione l'app standalone. Ciò significa che l'app standalone deve caricare un singolo record di dati contemporaneamente e non un intero file ogni secondo. L'app Web deve essere in grado di leggere il nuovo record e non solo l'intero file. Quindi i BLOB ospitati nello storage BLOB di Azure devono essere letti in modo simile agli stream locali, utilizzando API come Stream.Seek(int)
e Stream.ReadBytes(int)
.
Ci sono possibilità di farlo usando un controllo granuloso su un blob ospitato in un account di archiviazione di Azure?
In caso contrario, quali altri scenari possono essere utili? Un'applicazione ASP Web Api 2 esiste per altri scopi, quindi forse può essere sfruttata come intermedia tra l'app standalone e l'app web. Forse qualcosa come una coda?
Modifica successiva
Ci sono due tipi di utilizzo dei dati calcolati. Il primo è descritto sopra, i dati calcolati devono essere visualizzati in tempo reale su un'applicazione web. Il secondo enfatizza la necessità di file binari e blob: i file vengono scaricati e modificati offline. Quindi è obbligatorio avere i file generati e archiviati in una memoria BLOB.