SlideShow Album Manager: PARTE 3 - l'assemblaggio 

Sunday, October 25, 2009 3:58:11 AM
PARTE 1 | PARTE 2 | PARTE 3

Dopo aver definito nel primo articolo cosa volevo fare e descritti nel secondo articolo i principali componenti che volevo utilizzare ho fatto il punto della situazione sulle principali problematiche che avrei dovuto affrontare:

  1. Come faccio a scaricare il file xml di configurazione all'avvio?
  2. Come faccio a parsificare il file di configurazione?
  3. Come collego i dati contenuti nel file di configurazione alla mia AgDataGrid?
  4. Come faccio ad uploadare le immagini sul server e averne notifica nell'applicazione Silverlight sul client?
  5. Come faccio ad aggiornare il file di configurazione sul server?

 Di seguito come ho pensato di risolverle.

 1. scaricare il file xml di configurazione all'avvio
Prima di tutto ho inserito il nome del file fra i parametri iniziali dell'applicativo xap e ho sfruttato la classe WebClient aggiunta in Silverlight 3 per il download dello stesso. A ricezione avvenuta lo salvo in un IsolatedStorageFile per la successiva lettura altrimenti se il file non esiste la AgDataGrid rimane vuota e l'utente può solo inserire un nuovo album.

2. parsificare il file di configurazione in xml
Qui ho sfruttato la class XDocument di System.Xml.Linq per travasare il contenuto del file xml nei miei oggetti Album e slide. Di seguito la funzione che mette in pratica la cosa.

Xml file parsing

 Confesso di aver litigato un pò con la sintassi Linq prima di riuscire a fare una select dentro l'altra...

3. collegare i dati contenuti nel file di configurazione alla mia AgDataGrid
Dopo essermi creato la List<Album> come mostrato nel passo precedente, ho assegnato la stessa alla property "DataSource" dell'AgDataGrid. Per aggiornare le modifiche fatte nei campi editabili dall'utente della AgDataGrid non ho trovato niente di meglio da fare che gestire l'evento myControl_TextChanged di ogni TextBox e aggiornare di conseguenza la List<Album>.

4. uploadare le immagini sul server e ricevere notifica nell'applicazione Silverlight sul client
In questo caso ho dovuto fare una serie di modifiche all'applicazione Silverlight File Upload. Innanzitutto ho fatto in modo che il controllo server creasse la directory con il nome dell'album prima di uploadare le immagini. Poi per dare la notifica al client ho invocato dal controllo Server una funzione Javascript della pagina, la quale a sua volta richiama un metodo della applicazione Silverlight trasferendo ad ogni passaggio intermedio la lista dei files effettivamente caricati.

5. aggiornare il file di configurazione sul server
Dal codice di Silverlight File Upload ho estratto la parte dedicata al mero caricamento dei files creando una classe SimpleUpload semplificata. Questa classe in pratica lancia una HttpWebRequest asincrona e tramite callbacks gestisce il passaggio dello stream e la notifica del termine delle operazioni. Lo stream viene creato a partire dal file di configurazione xml precedentemente aggiornato e salvato in IsolatedStorageFile come nella porzione di codice seguente.

 Upload xml file

Comments are closed on this post.