Confessions of a Dangerous Mind

Brain.FlushBuffer()
posts - 176, comments - 234, trackbacks - 93

mercoledì 5 maggio 2010

Prism e le applicazioni modulari: quando il design diventa fondamentale

Il design di un’applicazione è sempre importante. Nel caso di sviluppo modulare con Prism, diventa ancora più importante e può definire la buona riuscita o il fallimento dell’applicazione stessa.

Vi sono essenzialmente due aspetti di design da tenere in considerazione:

  • Separazione delle attività
  • Progettazione degli “spazi operativi”

Con separazione delle attività, intendiamo la separazione e l’isolamento di alcune funzionalità all’interno di un modulo, piuttosto che all’interno di un altro, oppure la progettazione di componenti condivisi tra i vari moduli. Per esempio, il servizio di accesso ai dati ad una sorgente dati condivisa tra i vari moduli dovrebbe essere progettato per essere condiviso tra i vari moduli, mentre se un particolare modulo deve accedere a dei dati di un legacy database, probabilmente sarebbe meglio isolare tale funzionalità all’interno del modulo.

La separazione delle attività consiste anche nella separazione delle funzionalità di interazione uomo-macchina, ovvero nella suddivisione delle azioni a disposizione dell’utente. Queste azioni potrebbero essere la pressione di un tasto (Command) lo scorrimento e la selezione di un record (Binding), la modifica di dati di una entità ed il suo salvataggio.

Assieme a tutte queste azioni, dovrebbero essere definiti anche gli eventi pubblicati da ciascuno di questi “micro-programmi”, in modo che possa essere efficientemente implementata una collaborazione tra i micro-programmi stessi.

La progettazione degli “spazi operativi” è altrettanto importante in un’applicazione modulare, e consiste nella definizione di un layout operativo efficace, che consenta una interazione uomo-macchina facile ed intuitiva. Questa progettazione deve essere realizzata con in mente l’usabilità, e la modularità ci può venire in aiuto; pensate infatti ai moduli come una sorta di mattoncini Lego che possano essere assemblati “a piacimento” in modo da ottenere il risultato desiderato.

Nell’incontro di Venerdì 7 Maggio a Mestre presso il Novotel Castellana, con XeDotNet, tratterò questi temi. Se siete interessati allo sviluppo modulare delle applicazioni client con WPF e Silverlight non potete mancare!

posted @ lunedì 1 gennaio 0001 00:00 | Feedback (0) |

Prism: una caratteristica “uber alles”…

Come già detto nel mio precedente post, in Prism sono presenti un tale numero di concetti che ci si può perfino sbizzarrire con un piccolo gioco. Quale caratteristica può considerarsi irrinunciabile, rispetto a tutte le altre?

Per quanto mi riguarda, scelgo senza indugio l’infrastruttura di comunicazione, implementata tramite il pattern EventAggregator. Questa caratteristica, infatti, consente di suddividere il carico di lavoro tra vari moduli, realizzando di fatto una “separation of tasks”. Potremmo quindi combinare assieme diversi moduli, ognuno nato per risolvere una diversa problematica, e l’effetto risultante sarà maggiore della somma delle singole parti.

Se ci pensiamo bene, questo approccio rappresenta effettivamente le relazioni interpersonali che intraprendiamo ogni giorno. Nessuno di noi può saper fare tutto o conoscere tutto e per questo ci si rivolge ad esperti e/o professionisti. Perfino la cosa più semplice, come comprare il pane, viene fatta relazionandosi.

Perchè quindi i nostri programmi dovrebbero saper fare tutto da soli? Ma soprattutto, perchè non dovrebbero potersi avvantaggiare di un nuovo modulo che sa “fare altre cose” comunicandogli cambiamenti, interagendo con esso e lasciandogli il compito di risolvere il compito per il quale è stato pensato?

Pensiamo quindi sempre (se possibile) ad un sviluppo modulare, e nel caso di WPF e Silverlight diamo un’occhiata a Prism. Io ci sarò, Venerdì 7 Maggio a Mestre presso il Novotel Castellana. E voi ci sarete?

posted @ lunedì 1 gennaio 0001 00:00 | Feedback (0) |

Powered by:
Powered By Subtext Powered By ASP.NET