54 messaggi dal 20 maggio 2009
Ciao,

So progettando un applicazione silverlight in MVVM.

Volevo togliermi alcuni dubbi prima che parta il progetto.

I ViewModel devono avere solo proprietà bindate all'interfaccia ? o possono implementare anche logiche di business ?
può un viewModel istanziare una classe di business e eseguire le varie chiamate ?
(intendo a livello concettuale del best pratices è giusto farlo ?)

Quando Parte un Command dall'interfaccia questo è bindato sul ViewModel e quindi è il ViewModel stesso che gestisce l'implementazione del comando o comunque chiama un metodo del business.

Essendo il ViewModel un astrazione della View è corretto che abbia al suo interno la gestione della logica applicativa o comunque un riferimento al business ?

C'è modo in intercettare i command da un controller esterno ?

esempio:
se ho un controller che istanzia una pagina
quando la pagina parte il rispettivo viewModel si binda alla pagina.
posso gestire i Command dal controller invece che nel viewModel ?
é corretto farlo ? come si fa ad intercettare i command ?

Spero in qualche esperto di MVVM che possa fare luce sui dubbi che mi sono rimasti di questa architettura.

Vivaldi Francesco
artanis wrote:
I ViewModel devono avere solo proprietà bindate all'interfaccia ? o possono implementare anche logiche di business ?

generalmente fanno da mediatori, ma se l'app non è complessa, potrebbero avere anche direttamente logica (es: chiamate a servizi). molto dipende dalla complessità della tua applicazione e da quando vuoi
componentizzare/astrarre.

può un viewModel istanziare una classe di business e eseguire le varie chiamate ?

certo che può. in genere si fa così per non duplicare codice e controllare la logica "pura" da un punto solo.

posso gestire i Command dal controller invece che nel viewModel ?

lo sconsiglio se non è strettamente necessario. non è il massimo perchè leghi il VM ad un altro elemento e se non ti serve davvero farlo, alla fine è solo controproducente. è il VM, infatti, che gestisce tutte le problematiche connesse alla View e se metti un altro elemento di mezzo complichi solo la storia.

é corretto farlo ? come si fa ad intercettare i command ?

in questo caso devi lavorare con i messaggi ed il messenger. consiste nel mandare un messaggio dal tuo VM e "ascoltarlo" da qualche altra parte. ad esempio, questo si fa per poter aprire messagebox o simili da VM, senza accoppiare il VM stesso ad un certo tipo di UI. in questo modo, teoricamente, se dovessi cambiare la view, non devi cambiare niente sotto, perchè non sono accoppiati.
.

Daniele Bochicchio (ASPItalia.com)
I libri su HTML5, WP7, ASP.NET 4.0, VB 2010, C# 4, Entity Framework
Senior Software Architect @ 5DLabs.it
54 messaggi dal 20 maggio 2009
Grazie per le info sono state veramente utili.

Vivaldi Francesco
artanis wrote:
Grazie per le info sono state veramente utili.

prego
.

Daniele Bochicchio (ASPItalia.com)
I libri su HTML5, WP7, ASP.NET 4.0, VB 2010, C# 4, Entity Framework
Senior Software Architect @ 5DLabs.it

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC