posts - 644, comments - 2003, trackbacks - 137

My Links

News

Raffaele Rialdi website

Su questo sito si trovano i miei articoli, esempi, snippet, tools, etc.

Archives

Post Categories

Image Galleries

Blogs

Links

WPF e MVVM possono essere un boomerang

Nel weekend ho finito le demo dell'imminente workshop UGIdotNET del 20 Maggio. Nella demo della discovery di WCF4 ho costruito per la parte client una Console e poi una micro applicazione WPF per mostrare meglio i risultati.

Come d'abitudine sono partito impostando il progetto con MVVM e ho cercato di non esagerare per lasciare l'esempio il più pulito possibile.
Da un punto di vista manutentivo ci sono riuscito, questo è il beneficio di MVVM, e la potenza di WPF mi ha permesso di visualizzare le informazioni nel modo che mi è sembrato più chiaro.

Dal punto di vista di "comunicazione" dei concetti base è  un fallimento totale. Ci sono 14 file tra sorgenti e xaml, e se mai dovessi spiegare tutto il giro partirebbe mezza sessione.
Certo questo è uno di quei casi in cui MVVM può essere sacrificato. È solo un esempio che ha lo scopo di essere immediato da capire e non di essere una best practice. Sono sempre stato contrario a mostrare negli esempi di "tecnologia" la cura che andrebbe nel codice di produzione proprio perché sacrifica l'immediatezza della comunicazione.

Allora avrei dovuto forse buttare tutto negli event-handler a beneficio della leggibilità (cosa che non pagherebbe affatto in codice da produzione) ma avrei probabilmente sollevato il disappunto di coloro che sono familiari con WPF e MVVM.

Ecco dunque che torna la cara vecchia console a salvare la situazione. Penso che userò il client WPF per mostrare cosa si ottiene, e il client console per analizzare le parti salienti del codice di WCF4.
Per chi sta pensando a Winform, ritengo che sia una spada di Damocle. Con Winform è facile partire con poco codice e in un attimo il progetto si dilata a dismisura senza ottenere nemmeno lontanamente i risultati di WPF.

Certamente il mio caso è molto particolare, ma questo solleva ancora una volta l'annoso problema del mancato supporto nativo di WPF a MVVM. Se le classi di infrastruttura di MVVM fossero dentro gli assembly del framework, l'esempio sarebbe più snello e più condivisibile con chi non è ancora praticissimo di WPF.

Print | posted on martedì 11 maggio 2010 13:35 |

Feedback

Gravatar

# re: WPF e MVVM possono essere un boomerang

Io onestamente pensavo che con NET 4.0 avessero incluso tutto il necessario per MVVM nel Framework.
Hai perfettamente ragione, WPF e SL sono ormai un passo obbligatorio per lo sviluppo client e MVVM e' l' unico UI pattern che si sposa con XAML e MS avrebbe potuto fornire una sorta di MVVM Light Toolkit come ha fatto per MVC.
11/05/2010 17:08 | raffaeu
Gravatar

# re: WPF e MVVM possono essere un boomerang

I commenti che ho letto/sentito sono che non vogliono legare l'infrastruttura ad uno specifico pattern che, tra l'altro, può essere implementato in più modi.
Sta di fatto che la storia insegna e, come fu per la document/view di MFC, se un pattern è bello e pronto "in the box" allora la gente lo usa, altrimenti spuntano progetti fatti di "spaghetti code".
Il mio timore è che, non essendoci una guida precisa, la versatilità di WPF si trasformi in caos e difficoltà di condivisione dei sorgenti. Nel caso di grossi team diventa anche molto difficile inserire nuovi elementi all'interno di un team.
11/05/2010 17:21 | Raffaele Rialdi
Gravatar

# re: WPF e MVVM possono essere un boomerang

Sul fatto del non legarsi non posso dare torto a MS anche se con ASP.NET ci siamo poi legati ad un nuovo pattern (che poi e' il piu' vecchio ...) che e' MVC ma ad esempio si puo' usare benissimo anche MVP su ASP.NET.
Del resto pero', come ben dici, si corre il rischio di lasciare nelle mani degli 'spaghettiani' uno strumento piu' pericoloso di Windows Form. Posso solamente immaginare cosa sarebbe un' applicazione WPF in 'spaghetti style' ...
Effetivamente se si usa WPF in Team diventa davvero 'caotico' se non si segue un' implentazione uniforme. Diciamo che Prism sarebbe la risposta ma anche li' non spiega mica MVVM o MVP. E' troppo per chi vuole iniziare ad usare WPF.
25/05/2010 21:23 | raffaeu
Gravatar

# re: WPF e MVVM possono essere un boomerang

Mettiamola così. Ci fossero state alcune classi built-in in WPF per poi farsi il proprio MVVM, io sarei gia stato contento.
Se in più ci fosse stato un wizard per vs.net che ti crea una versione light di MVVM (come c'è su codeplex per VS2008) ancora meglio.
La maggior parte di utenti inizia con i wizard di vs.net e il fatto che si parta senza una traccia precisa, aiuta a seguire le worst practives (per esempio definire i Command in modo statico nel code behind, un vero classicone).
Speriamo mettano qualcosa a disposizione tra i wizard scaricabili con l'Extension Manager ;)
25/05/2010 22:58 | Raffaele Rialdi
Gravatar

# helll

how to solve this problem
28/06/2010 14:44 | Jim
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET