"caluse" <caluse> wrote in message
news:364740@...
Negli ultimi giorni ho cercato di documentarmi e di capire qualcosa di più su silverlight. Argomento molto vasto e complesso per chi, come me, è agli inizi e cerca di capire e prendere spunto da chi ne sa molto di più. Nonostante le molte pagine lette e le decine di esempi scaricati e debuggati mi sono sorti alcuni dubbi.
Ipotizzando di dover creare un gestionale (uso come esmpio il gestionale perchè è il mio ambito di lavoro) e volendolo realizzare in silverlight mi sono chiesto quale sarebbe l'architettura migliore (o più corretta). Credo che l'accoppiata MVVM e Ria Services siano una buona base di partenza (correggetemi se sbaglio).
Sì, il rispetto del pattern MVVM è quasi indispensabile nello sviluppo di applicazioni WPF/Silverlight/WP7, quindi è una scelta che consiglio. Utilizzato WCF Ria Services risparmi molto tempo nell'implementazione dello strato di servizi ed in generale nell'accesso ai dati appoggiandoti a EF. Tuttavia, prima di sceglierne l'adozione, ti consiglio di approfondire e di fare qualche test mirato agli aspetti chiave del tuo gestionale, in modo da ridurre le sorprese. Ti dico questo perchè WCF Ria Services è un bel "mini-framework" ma ovviamente per ridurci i tempi di sviluppo ha i propri limiti che è bene conoscere per "aggirarli" senza impazzire a sviluppo avviato (riducendo quindi i possibili allungamenti di tempo).
Un gestionale però è costituito da decine di pagine ed ha una logica, a volte, molto complessa.
Racchiudere tutto in un singolo xap non credo che sia la soluzione migliore. Le dimensioni dello xap potrebbero anche essere notevoli il che comporterebbe tempi di attesa (anche lunghi) prima che l'applicazione sia disponibile. Inoltre racchiudere tutto in uno xap significherebbe scaricare
tutto per, magari, usarne solo una parte (se ad esempio un utente volesse solamente consultare l'anagrafica cliente non ha senso scaricare tutto il gestionale).
La mia idea era quella di creare uno xap principale (main) da cui scaricare, ad esempio, lo xap dell'anagrafica clienti per poi visualizzarne
le pagine. In questo modo l'applicazione main sarebbe molto più "leggera" e
l'utente scaricherebbe solo quello di cui ha bisogno senza perdite di tempo.
Cercando in giro ho visto che si parla molto di Mef. Sfortunatamente non sempre gli esempi sono chiari e funzionano (anche se seguiti alla lettera).
Vorrei quindi sapere qual'è, almeno teoricamente, l'architettura corretta da utilizzare in un progetto silverlight. Considerando anche il fatto che tra xap secondari talvolta è necessario un "dialogo" (ad es. dalla lista dei clienti l'utente può voler visualizzare i documenti emessi per un determinato cliente)
Per dividere l'applicazione hai tre possibilità: MEF, PRISM o caricare semplicemente gli XAP all'occorrenza ed istanziare gli UserControl in esso contenuti. Quest'ultima soluzione (illustrata nel nostro script #25) è la più semplice ma richiede molto codice "manuale", se invece usi gli altri due framework hai più funzionalità e sono decisamente più "robusti". Ovviamente richiedono un po' di studio, ma ne verresti ripagato col tempo perchè la manutenibilità di un progetto che usa MEF o PRISM è decisamente migliore. Comunque sia, per la comunicazione puoi fare in modo che i "moduli" rispettino delle interfacce condivise oppure (e te lo consiglio) usare il patter Mediator di cui trovi una sorta di implementazione nell'MVVM Light Toolkit di GalaSoft e anche nell'EventAggregator di PRISM (in pratica, semplificando, i moduli non si conoscono e si scambiano dati con messaggi).