Microsoft supporta la portabilità sfruttando il pattern MVVM: link
Ciò significa che posso creare un ViewModel riutilizzabile in termini di diversi client (ad es. Universal Apps, WPF, Silverlight, Xamarin iOS, Xamarin Android). Se lo farò, avrò una grande dipendenza dal mio ViewModels per la mia applicazione. Ma c'è un client che non funziona con il modello MVVM tradizionale: i siti Web (a parte l'utilizzo del mvvm lato client). C'è qualche indicazione su questo?
La mia preoccupazione principale è che elementi come la logica e la convalida dei dati siano posizionati in ViewModels, e se non voglio doverli duplicare su un Controller. Ho letto cose su MVVMP per aiutare a risolvere questo problema, dove la logica di business e la convalida dei dati avvengono nel relatore anziché in ViewModel / Controller e ViewModel / Controller viene utilizzato per offrire proprietà e punti di esecuzione al presentatore, ma poi quando arriva a cose come la convalida dei dati, stavo ripetendo il codice.
Esempio:
public class CustomerViewModel
{
private CustomerPresenter Presenter { get; set; }
[Required]
public string FirstName
{
get { return Presenter.FirstName }
set { Presenter.FirstName = value; OnPropertyChanged() }
}
}
Ora devo decorare il FirstName con RequiredAttribute
anche se il mio Presenter sa che è necessario, altrimenti la mia vista non notifica agli utenti che la casella di testo associata ha un problema. Non sono sicuro di come funzioni con Controllers.