Farò software ERP per la gestione dei dati per le attività commerciali. La soluzione deve avere due parti importanti: un'applicazione WPF per tutti i client e un'applicazione API Web MV MV ASP per tutti i client.
L'applicazione API gestisce tutti i dati pubblici uguali per tutti i client e li memorizza in un database SQL server nel cloud di Azure. I client possono accedere a questi dati tramite un'API al servizio web.
L'applicazione WPF gestisce tutti i dati privati e li archivia anche su un database SQL server sul server del client. Ma qui c'è un problema. Non tutti i client hanno un proprio server. In questa situazione il database deve anche essere eseguito su un servizio cloud come Azure.
Il 99% degli utenti utilizza solo l'applicazione WPF e non il servizio web. Le API di accesso all'app desktop dal servizio Web. Per entrambi i database (su client e server) userò Entity framework 6 con le migrazioni di prima del codice.
La domanda è quale modello di progettazione del codice (come MVVM o MVC) posso usare per il mio software ERP che non ha codice duplicato e con un livello di servizio per gestire la direzione dei dati, per il servizio web o per il cliente server farm o se l'ultimo caso non è possibile alla server farm del client su Azure.