Ho iniziato da poco a sviluppare un'app WPF utilizzando il Composite WPF rilasciato da MS all'inizio dell'estate.
La prima impressione è buona, leggendo la documentazione (molto ben fatta) in poche ore si riesce a capire e definire la struttura generale del progetto e ad iniziare a realizzare le triadi MVP da infilare nelle varie region.
Cosa offre?
Sono 4 le cose principali che mette a disposizione:
- Moduli: la possibilita di suddividere l'applicazione in moduli caricati staticamente o a dinamicamente a runtime. Ogni modulo ha le sue view ed è indipendente dagli altri.
- Regions: la finestra principale (Shell) viene suddivisa in region che vengono riempite dalle view definite nei vari moduli.
- Commands: derivati dai Command nativi di WPF aggiungono funzionalità che permettono di mettere in comunicazione Presenter/View di regioni diverse senza creare dipendenze.
- EventAggregators: dove i command non bastano ossia dove la comunicazione deve andare al di fuori del modulo gli eventi sono il meccanismo che permette di far dialogare moduli diversi.
- Linee guida: questa non è una feature documentata ma indotta dall'utilizzo del composite WPF, l'applicazione ottenuta è ben organizzata e strutturata grazie hai "vincoli" indotti dal Framework
Nota dolente: si dice che Composite WPF sia indipendente da altre lib (vedi Unity). Io e Alessandro abbiamo faticato non poco a rimuovere i riferimenti a Unity e ad implementare il meccanismo di risoluzione dei componenti tramite Spring.NET. IMHO qui la cosa si poteva fare meglio, magari facendo in modo che lo UnityBootsrapper non avesse un riferimento all'interfaccia IUnityContainer ma ad una interfaccia IContainer generica rendendo di fatto il Composite WPF _veramente_ indipendente da Unity.
Agli interessati lascio il link al blog di alessandro dove entro pochi giorni verrà pubblicata la soluzione con i sorgenti.
Technorati Tags:
CompositeWPF