Posts
83
Comments
165
Trackbacks
11
September 2008 Blog Posts
WPF & Composite Application Block (CAB)

Visto che sono stato tirato in ballo esprimo la mia opinione sul framework in oggetto (e in generale sulla frameworkite di noi sviluppatori).

Come ha detto Ema, stiamo utilizzando il CAB per WPF in un progetto che stiamo sviluppando insieme e quindi stiamo "sbattendo la testa" sulle problematiche reali dell'utilizzo di questo framework.

In passato avevo utilizzato la SCSF (estensione del CAB per WinForm) per un grosso progetto e l'impressione era stata tutt'altro che positiva: troppo vincolante e troppo articolato. L'utilizzo di questi framework sono, secondo il mio punto di vista, fortemente consigliati in team che hanno bisogno di una certa rigidità, vista nella sua accezione positiva. Ovvero nella standardizzazione "spinta" del codice, in modo che tutti i componenti del team abbiano una linea guida da seguire.
Ma proprio qui sta, secondo me, la chiave di volta: regole troppo rigide e non definite/nate dal team e dalle sue esigenze (in fin dei conti il framework è già fatto) possono portare ad un rigetto. Molte volte, una struttura rigida, impone scelte "discutibili" che portano i programmatori a cercare workaround per accelerare i tempi di sviluppo ottenendo quindi l'effetto contrario: ognuno rispetta le proprie linee guida, e della standardizzazione/uniformità del codice se ne perdono le tracce.

Partendo da questo presupposto, il mio primo impatto con questo framework (CAB per WPF) è partito all'insegna della diffidenza, parzialmente "allentata" con il suo utilizzo: in effetti questo framework nasce sotto una luce diversa. Per prima cosa non necessita più di quel cubo impenetrabile che era l'ObjectBuilder dell'EnterpriseLibrary, ma utilizza un container di IoC (di default Unity) più smart per iniettare le dipendenze e per garantire una testabilità più elevata.

E' secondo me, sicuramente, un passo avati rispetto al CAB per WinForm, ma...come al solito c'è sempre un ma.
Sempre più mi sto rendendo conto della necessità di non reinventare tutte le volte la ruota e in questo certi aiuti sono sicuramente bene accetti: mai e poi mai mi immaginerei ora di mettermi a scrivere un layer di accesso ai dati di sana pianta (a meno di specifiche richieste)...c'è NHibernate che mi da una mano. Idem per iniettare le dipendenze: non faccio più nulla a mano, ma utilizzo Spring. Un grosso aiuto con il minimo sforzo!!!!

Utilizzare questi framework mi impone di sviluppare la mia applicazione seguendo certi vincoli, ma i vantaggi che mi danno sono molto, ma molto, superiori rispetto alle "noie" che *possono* procurarmi.
Ecco, il discorso sta tutto qua: non dico che il CAB non sia un ottimo framework (certo si può sempre far edi meglio, vista la fatica per sostituire Unity con Spring...ma questo è un altro discorso), ma dico solamente che i vantaggi che mi da (gestione delle region e *forse* gestione dei moduli) non sono così "vantaggiosi" rispetto ai vincoli che mi impone e alle rigidità che presenta.

Magari utilizzandolo più assiduamente ed entrando di più nel "cuore pulsante" del CAB ne troverò altri vantaggi e allora...ve li comunicherò e rivedrò la mia posizione, ma per ora dico: "Ema se mi avessi ascoltato..." :-)

melkio

posted @ Monday, September 15, 2008 8:04 AM | Feedback (3)