66 messaggi dal 11 maggio 2006
Sto sviluppando un'applicazione, che avrà diversi layers di presentazione, tra cui un sito in ASP.NET MVC.

L'architettura del sistema dovrebbe essere la seguente:
MVC (Controllers e Views) -> BLL (Viewmodels e Services) -> DAL (Models)

Le viewmodels sono appunto delle classi flat di oggetti e nella mia architettura, grazie all'implementazione degli attributi, saranno anche parzialmente responsabili della validazione di alcune forms.

Trattandosi di validazione, e considerando che esse saranno il tramite tra le varie UI, ritengo che esse debbano fare parte dell BLL e non del presentation layer; anche per evitare inutili ripetizioni.

Seguendo questa logica, mi pongo il problema della localizzazione dei messaggi di validazione delle form: dove dovrei gestire la localizzazione? Nel presentation layer (MVC e altri distintamente) o nel business layer?

Ora i puristi mi diranno che certamente la localizzazione non dovrebbe essere affare di competenza del BLL ma del presentation, ma questo mi porterebbe a due conseguenze:
a) Spostare le viewmodels con gli attributi di validazione e display nel presentation layer su MVC (E ripeterle per altrei UI)
b) Duplicare le viewmodels nel business layer per la validazione???

La soluzione "purista" non mi attrae particolarmente, in quanto secondo me sarebbe poco logica, ripetitiva (Non DRY) ed in ultimo anche più dispendiosa.

Sarei pertanto più orientato a mantenere la mia idea iniziale ovvero creare dei file di risorse direttamente nel BLL, ed eseguire direttamente dal BLL la localizzazione e la validazione dei vari modelli e metodi.

A cosa vado incontro secondo voi? Vedete soluzioni più eleganti? Mille grazie.
Modificato da hiram il 20 novembre 2013 22.43 -
non sono un grandissimo fan di queste soluzioni, ma è comunque lecita, nella misura in cui a te (e al tuo team) sta bene il compromesso.

i ViewModel, comunque, sono qualcosa che, per definizione, è specifico delle View. potresti benissimo fare un assembly a parte per questi ultimi, dato che credo che è molto difficile che tu li possa riutilizzare con una GUI differente: scenari diversi, GUI diversa e ViewModel differenti. probabilmente anche risorse differenti.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
66 messaggi dal 11 maggio 2006
Io identifico i viewmodels come parte del BLL, anche perchè i Services che sono del BLL restituiscono dei risultati utilizzando come formato appunto le viewmodels. Tu li attribuiresti al Presentation? Cosa passeresti nel caso al Presentation dal BLL?
beh, stante quello che hai detto, a cosa servirebbe l'Object Model?
qui stiamo usando il pattern MVC, che è tutto a livello di presentation. quindi il Model (che chiamiamo ViewModel per differenziarlo dall'Object Model, direi) è quello che media il modello applicativo in chiave presentation. ai repository/logica passerei l'object model, che però non passerei mai dai repo/logica alla view, perché utilizzerei un DTO/ViewModel/come vuoi chiamarlo, che mi consenta di risolvere più facilmente il problema di presentation.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP

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.