Ho cercato in giro su StackOverflow per un post simile sul lato client e sì, c'erano alcune discussioni su ciò che sto per chiedere, ma ho deciso di iniziare una nuova discussione.DDD e validazione
Supponiamo di avere un'applicazione che utilizza il modello di dominio modello, DDD e un sacco di altri modelli di progettazione. Supponiamo di avere un certo numero di soluzioni come di seguito elencati:
- Solution.Model
- Solution.Repository
- Solution.Services
- Solution.Presentation
- Solution.UI.Web
Il livello dell'esperienza utente sarà Solution.UI.Web e supponiamo che sarà un'applicazione WebForms ASP.NET. come si applica la validazione lato client?
Ci sono da considerarsi una serie di cose:
In primo luogo, non avremmo dovuto colpire l'application server/database (s) per tornare eventuali errori di convalida al cliente, potremmo comunque implementare anche la validazione lato server, ma avremo bisogno anche della validazione lato client.
In secondo luogo, noi non vogliamo attuare le regole di convalida sullo strato esperienza dell'utente. Questo perché se la tua applicazione è una WebApp e poi decidi di creare anche un client WinApp, dovrai implementare nuovamente le regole di convalida -> incubo di manutenzione.
Un approccio semplice sarebbe implementare la logica di convalida con gli oggetti ViewModel (viste appiattite delle entità di dominio che verranno inviate al client) e quindi convalidare tali oggetti prima di colpire i server dell'applicazione/database.
Un altro approccio, quello che ho visto usato molte volte in diverse applicazioni, è quello di generare solo un insieme di messaggi di errore di convalida e inviare tale raccolta al cliente. va bene, ma c'è un problema. solo un semplice messaggio di riepilogo degli errori di validazione non funzionerà, specialmente se si dispone di un modulo per l'immissione di dati di grandi dimensioni.
Ora il framework ASP.NET MVC rende la vita molto più semplice. puoi utilizzare EF + DataAnnotations e il framework MVC Scaffolding può fare la maggior parte del lavoro per te. ma questo è il caso se vuoi creare un'applicazione MVC e implementare la tua logica di validazione con jquery e java script.
Ma se fosse necessario un approccio più generico per implementare un framework di convalida che può essere utilizzato e utilizzato in diverse applicazioni, ad esempio WinForms e WebForms?
Giusto per chiarire, quello che sto cercando è un insieme di modelli/principi e/o tecniche/strutture di progettazione per implementare un framework di validazione che può essere implementato con il tuo modello di dominio e quindi essere applicato alle tue applicazioni client. AND -> non voglio solo restituire una raccolta di messaggi di errore relativi alle stringhe o qualsiasi altra cosa, voglio poter aggiornare i miei controlli con associazione a dati (TextBox, ComboBox, DateTimePicker, ecc.) In caso di errore di validazione in modo che il livello dell'esperienza utente sarebbe più intuitivo (se lo vorrai).
Ho visto alcune implementazioni e framework qua e là, e ho usato la convalida lato client ASP.NET MVC per un po 'di tempo. quindi la mia risposta non ha nulla a che fare con la convalida MVC o JavaScript.
P.S Se potessi menzionare link di riferimento, libri, articoli, progetti di esempio e/o includere frammenti di codice sarebbe fantastico.
TNX, Armin [:
grazie per la risposta ed i collegamenti.hai ragione, ci stavo pensando e lavorando su alcune applicazioni di esempio negli ultimi due giorni e oggi mi sono appena reso conto che cercare di automatizzare l'intero processo di implementazione della convalida lato client sarebbe un po 'eccessivo. la buona notizia è che lo spazio dei nomi DataAnnotations può essere utilizzato per implementare la logica di convalida nelle entità di dominio o visualizzare gli oggetti del modello. ciò risolverà la centralizzazione delle regole di convalida. ma alla fine dovremo implementare l'effettiva validazione sul client stesso, che non è grossa. – Nexus