Scaricamento file con VDF

Uno dei flussi di lavoro forniti da VDF è il download di un file. Quando si scarica un file dal Vault, solitamente sono necessari numerosi altri passaggi oltre al semplice recupero dei bit dal server del Vault.

Questi includono ad esempio l'identificazione della posizione della cartella di lavoro per il file, la visualizzazione di una finestra di dialogo di avanzamento, la riparazione di riferimenti a file interrotti a causa di spostamenti o ridenominazioni e così via. Anche se le applicazioni client non necessitano di questa logica di business, il layer VDF offre vantaggi aggiuntivi, ad esempio migliora le prestazioni con il download parallelo di file e nasconde la complessità della gestione del servizio di archivio dei file.

Come molte aree di funzionalità fornite da VDF, i metodi API di acquisizione dei file sono disponibili nelle versioni con e senza interfaccia grafica utente. Il metodo di acquisizione dei file basato su interfaccia utente è accessibile mediante il servizio FileManager che si trova nella classe di connessione VDF. Questo servizio offre diversi metodi per lavorare con i file del Vault. Il metodo specifico da utilizzare per il download di uno o più file del Vault è disponibile in due versioni: FileManager.AcquireFiles() e FileManager.AcqurieFilesAsync(). Come suggerisce il nome stesso, il primo metodo è una chiamata di download sincrona, mentre il secondo è una chiamata asincrona che restituirà immediatamente un System.Threading.Tasks.Task che è possibile utilizzare per pianificare un proseguimento. Le versioni basate sull'interfaccia utente dei metodi di acquisizione dei file hanno nomi simili, AcquireFiles() e AcquireFilesAsync(), ma sono accessibili dalla classe VDF.Vault.Forms.Library. Come con il metodo non basato sull'interfaccia, la versione basata sull'interfaccia asincrona rilascerà quasi immediatamente il controllo al metodo chiamante e restituirà un'attività del reale lavoro di acquisizione. I metodi basati sull'interfaccia utente visualizzano per default una finestra di dialogo di avanzamento durante il download. Se è stata utilizzata la modalità asincrona, la finestra di dialogo di avanzamento sarà di tipo non modale; in caso contrario, sarà modale.

Tutti questi metodi di acquisizione accettano forme di oggetti di impostazioni per controllare vari aspetti del flusso di lavoro di acquisizione. I metodi che non utilizzano l'interfaccia utente accettano la classe VDF.Vault.Settings.AcquireFilesSettings come parametro. Questa classe viene utilizzata come classe di base per le diverse versioni delle impostazioni di download. Le versioni dei metodi di acquisizione dei file basate sull'interfaccia utente accettano due versioni differenti di classi di impostazioni che utilizzano AcquireFilesSettings come classe di base. Si tratta delle classi VDF.Vault.Forms.Settings.ProgressAcquireFilesSettings e VDF.Vault.Forms.Settings.InteractiveAcquireFilesSettings. È possibile passare una di queste classi di impostazioni ai metodi di acquisizione dei file basati sull'interfaccia utente. Se le applicazioni client utilizzano ProgressAcquireFilesSettings, all'utente verrà mostrata soltanto una finestra di dialogo di avanzamento durante il download dei file. Se, invece, viene passata ai metodi di acquisizione dei file basati sull'interfaccia utente un'istanza di InteractiveAcquireFilesSettings, VDF mostrerà all'utente una finestra di dialogo "carica/estrai" prima di provare a scaricare i file. Tramite questa finestra di dialogo, è possibile modificare alcune impostazioni di download prima di scaricare i file, ad esempio è possibile specificare se estrarre alcuni file o se modificare la posizione di download.

Le applicazioni client utilizzeranno tutte le diverse classi di impostazioni di acquisizione dei file nello stesso modo. La procedura generale di gestione delle impostazioni di acquisizione dei file consiste solitamente di due passaggi. Innanzitutto, creare una nuova istanza della classe di impostazioni. Il costruttore delle impostazioni richiede una connessione VDF che deve corrispondere alla connessione al Vault da cui l'applicazione client sta cercando di scaricare i file. Dopodiché, aggiungere i file che si desidera acquisire (noti anche come download) all'istanza delle impostazioni mediante il metodo AcquireFilesSettings.AddEntityToAcquire(). Ovviamente, vi sono numerose altre impostazioni e punti di estendibilità che possono essere regolati. Ulteriori informazioni sulle proprietà delle altre impostazioni sono disponibili nella documentazione dell'SDK. Una volta completata la selezione delle impostazioni, chiamare il metodo AcquireFiles[Async]() appropriato e trasmettere le impostazioni come parametro. Un esempio di flusso di lavoro di acquisizione che utilizza VDF è disponibile nell'applicazione di esempio "VaultBrowserSample" inclusa nell'SDK.

Spostamento dall'API di download dell'SDK 2013 all'API di download 2014

Gli sviluppatori maggiormente interessati all'esecuzione di un trasferimento diretto dall'SDK 2013 all'SDK 2014 molto probabilmente si concentreranno sul metodo di download sincrono non basato sull'interfaccia utente, ovvero FileManager.AcquireFiles(). Questo perché le versioni precedenti dell'SDK non fornivano metodi o componenti asincroni o di interfaccia ed è quindi probabile che le applicazioni client da aggiornare dispongano già di codice o elementi dell'interfaccia utente esistenti per i file da scaricare e/o da estrarre. La maggior parte delle applicazioni 2013 probabilmente ha scaricato file dal Vault mediante il metodo DownloadFile() di DocumentService. Questo metodo scarica semplicemente i byte per un determinato file nel Vault. Di seguito viene mostrato un esempio di codice che utilizza questo metodo:

Il codice precedente consente di scaricare i byte per un determinato file dal Vault e di scriverli sul disco in una determinata posizione. Di seguito viene mostrato un esempio di codice che utilizza VDF per ottenere lo stesso risultato: