In questo lungo ponte ho provato a scrivere una piccola ( ma non triviale ) applicazione utilizzando
Composite UI Application Block. Premesso che non sono un fan degli Application Block, penso che di questo non se ne possa fare a meno se si vuole scrivere un applicativo di tipo 'rich' allo stato dell'arte. Il livello di disaccopiamento che si riesce ad ottenere tra gli elementi di logica e di interfaccia utente è così grande che scrivere un'applicazione costruita con add in viene quasi naturale. Per chi non avesse ancora provato ad usare CompositeUI suggerisco di partire a scrivere un'applicazione seguendo il capitolo "Develpoing Applications Using the Composite UI Application Block", molto più semplice e lineare che non tuffarsi subito nel codice dei Quick Starts fornito con il setup. Andando avanti si potranno poi spiluccare idee dai QuickStart stessi quando ci si trovi di fronte a soluzioni apparentemente insolubili. Ad esempio non ho trovato in nessun punto della documentazione il fatto che qualunque SmartPart possa ottenere una reference al workItem in cui si trova tramite una [ServiceDependency] di tipo WorkItem. Un altro particolare che mostra quanta cura sia stata posta nella realizzazione di questa libreria è l'EventBroker: gli eventi pubblicati possono essere sottoscritti in thread diversi da quello di pubblicazione. Per esempio un thread esegue una elaborazione in batch e devo fare un progress su interfaccia utente, tutto quello che devo fare è pubbblicare ( e sollevare ) un evento di progress, e poi sottoscriverlo nell'interfaccia utente specificando il parametro ThreadOption.UserInterface ed il marshaling tra i due thred viene fatto in modo trasparente.
In conclusione, se avete esigenza di scrivere un'applicazione WinForm, non partite senza avere provato il "CAB".
Saluti