Confessions of a Dangerous Mind

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

July 2009 Blog Posts

SketchFlow: imbattibile!

Sto utilizzando SketchFlow per modellare un prototipo di un progetto basato su WPF. In una parola: incredibile! Molto più potente di PowerPoint e più espressivo di Visio, permette di realizzare prototipi funzionanti con i corretti feedback (focus, hovering, click) sulle azioni di selezione da liste e sui pulsanti. Ho creato un’interfaccia utente perfettamente funzionante in pochi minuti per dimostrare al cliente che cosa si andrà a realizzare. Inoltre permete di realizzare presentazioni veramente molto belle, completamente stand-alone. Potete infatti “compilare” il progetto e rilasciare un’applicazione .exe, oppure generare un documento di word (fantastico!!!!) con tutte le schermate e la...

posted @ Wednesday, July 29, 2009 10:41 AM | Feedback (0) |

WPF Prism Design Concepts Part 4: Multi Targeting

Eccoci arrivati all’ultima parte di questa mini-serie di articoli sui design concepts di Prism. in questo articolo andremo a scoprire cos’è il Multi-Targeting. Con il termine Multi-Targeting si intende quell’insieme di regole e strumenti che permettono di riutilizzare lo stesso codice sorgente su più piattaforme. Nel nostro caso, le piattaforme sono WPF e Silverlight. Queste due tecnologie, come è noto, non sono “binary compatible”, ovvero una dll compilata “per WPF” non può girare in una applicazione Silverlight e viceversa. L’unica possibilità che ci è concessa, quindi, è quella di avere lo stesso codebase che a seconda della piattaforma scelta in...

posted @ Monday, July 27, 2009 10:05 AM | Feedback (0) |

WPF Prism Design Concepts Part 3: Container

Di tutti i concetti che compongono Prism, il concetto di “Container” è sicuramente il più difficile da affrontare concettualmente. In pratica, in un ambiente modulare, uno degli obiettivi deve essere rappresentato dal disaccoppiamento spinto dei moduli. Questo obiettivo, però, non deve far dimenticare che questi stessi moduli devono poter comunicare tra loro e con la Shell che li ospita. Per raggiungere questo obiettivo, l'infrastruttura di CAL mette a disposizione un dependency injection container. Un container consente effettivamente di ridurre l’accoppiamento tra i vari componenti, permettendo la creazione, la gestione ed il ciclo di vita delle entità basandosi sulla configurazione...

posted @ Tuesday, July 21, 2009 1:24 PM | Feedback (0) |

WPF Prism Design Concepts Part 2: Modularity

Il concetto di applicazione modulare non è nuovo. In passato abbiamo assistito ad una vera escalation di applicazioni modulari, o soluzioni per la creazione di applicazioni modulari. Ricordo ancora la mitica Digital Dashboard basata su componenti ActiveX… che oggi è diventata Sharepoint. In effetti le soluzioni modulari sono sempre state più presenti sul web piuttosto che nelle applicazioni client, in quanto il linguaggio HTML si è sempre prestato ad una “composition” dinamica… molto di più dei vecchi componenti ActiveX. Neppure l’avvento di .net ha migliorato la situazione, in quanto nel mondo client con Windows Forms, il modello Event-Based con code...

posted @ Monday, July 20, 2009 9:53 AM | Feedback (1) |

WPF Prism Design Concepts Part 1: UI Composition

Prima di iniziare ad utilizzare Prism, conosciuto anche come Composite Application Library (CAL), ci sono dei concetti di design delle applicazioni che si possono realizzare che non possono assolutamente essere ignorati. Questi vanno sotto il nome di: UI Composition Modularity Container Multi Targeting UI Composition La “composizione dell’interfaccia” è uno degli aspetti chiave di Prism. Si basa su un concetto piuttosto semplice, ovvero che le applicazioni possono essere composte da diversi “moduli” che risiedono all’interno di zone predeterminate (View Composition)....

posted @ Thursday, July 16, 2009 10:20 PM | Feedback (2) |

WPF Prism: cos’è?

Con questo post vorrei provare a spiegare cos’è Prism, detto anche Composite Application Library . Prism nasce da un progetto rilasciato nel 2005, la Composite Application Block. Si trattava di una serie di librerie per la creazione di applicazioni client modulari che impiegava come tecnologia base Windows Forms. Non ho impegato molto CAB, e l’ho trovato piuttosto complesso, sia da utilizzare, sia per sviluppare, forse perchè la tecnologia Windows Forms si prestava poco a realizzare ciò che CAB professava, ovvero Separation of Concerns, Modularity, UI Composition. Dalle “lesson learned” di questo progetto, e dall’osservazione che per sviluppare in modo...

posted @ Thursday, July 16, 2009 3:12 PM | Feedback (2) |

Model-View-ViewModel: Sviluppare un Cliweb

Si si… nessun errore di scrittura. In uno sprazzo di creatività, l’ho battezzato io Cliweb. In pratica, secondo la mia filosofia di sviluppo di applicazioni client, un Cliweb è effettivamente un’applicazione client che si comporta come un’applicazione web. Facciamo un passo indietro: qual’è stata la fortuna del web, quella scintilla di virtù che l’ha portato a travolgere le applicazioni client in un decennio (…anche meno)? In una parola, semplicità. Il web è nato semplice, anche se adesso gli si vuol far fare “di tutto di più”. Le applicazioni client, noiose, grigie, tutte uguali, ma tutte diverse, annoiavano e fuorviavano...

posted @ Tuesday, July 14, 2009 12:43 AM | Feedback (0) |

Model-View-ViewModel: superare i limiti dei CodeBehind-less User Controls

Come già anticipato in un mio precedente post, l’approccio basato su file XAML only per creare applicazioni con pattern MVVM che permettano una personalizzazione spinta dell’interfaccia, si scontra con l’impossibilità di inserire uno user control SENZA codebehind all’interno di una window (o di una page). Tanto per intenderci, faccio un parallelo con ASP.net, essendo il concetto molto simile a quello che supporta i Web User Control (ascx). In ASP.net ho una pagina, che contiene uno user control. Questo viene “registrato” in cima alla pagina con una “direttiva” del tipo: ...

posted @ Thursday, July 2, 2009 10:20 PM | Feedback (0) |

Powered by:
Powered By Subtext Powered By ASP.NET