La tua soluzione non è classica MVC, a mio parere, è molto meglio. Quello che hai, il mio giovane Padawan, è più come un approccio SOA .
Personalmente mi piace questo stile di architettura. Nel livello di business logic, viene ascoltato il messaggio SOA (Service-Oriented Architecture). Con il suo accoppiamento lento e la rimozione delle dipendenze implicite, il modello SOA offre flessibilità e uniformità attraverso la specifica di un'interfaccia di servizio definita, che nasconde i modelli di dominio e le tecnologie di implementazione.
Sfortunatamente, non esiste un progetto architettonico così chiaro per il livello di presentazione. Che cosa dicono le migliori pratiche del settore sullo sviluppo del front-end di un'applicazione? Qual è il modo migliore per connettere il front-end in modo ordinato all'interfaccia di servizio?
Il classico MVC soffre (imho) di almeno tre importanti difetti architetturali:
- Non rispetta i dati, i dati inviati attraverso il filo sono dati altamente orientati alla presentazione e marcati.
- Lo scambio di dati e la logica di presentazione sono strettamente accoppiati. Non è possibile spostarsi tra i passaggi del flusso di presentazione senza avviare le operazioni di scambio di dati. Le pagine Web vengono visualizzate in risposta alle richieste GET e POST inviate dal browser. Ancor peggio, ogni operazione di interscambio dati avviata dal browser impone un flusso di presentazione. Un famigerato risultato di questo stretto accoppiamento è il "problema del pulsante di ritorno del browser".
- Il terzo difetto è che il modello web è richiesta / risposta. Non supporta gli stili di interazione peer-to-peer richiesti per la notifica degli eventi del server.
In questo frangente, si sarebbe tentati di concludere che AJAX è la risposta a questi problemi. Sfortunatamente, AJAX stesso è solo una capacità grezza e non un modello prescrittivo. È possibile utilizzare AJAX e creare ancora un orribile modello ibrido in cui il server Web continua a guidare Presentation Flow in risposta alle operazioni di Data Interchange e l'interazione AJAX si blocca da un lato, per così dire.
L'unico modello, che mi aiuta di più , è tuttavia basato su MVC. MVC sul lato server e lato client. La vista sul server è il modello nell'applicazione client, per così dire. Un'illustrazione:
La tua applicazione sembra seguire questo principio approssimativamente. Probabilmente hai avuto difficoltà a trovare una buona struttura nel tuo HTML e JS. Prova a guardarlo con questo approccio. Il tuo cliente Model
è la vista laterale del server, i tuoi dati JSON. I tuoi binding e i tuoi eventi sono il tuo Controller
. L'HTML è il tuo View
. Prova a separare gli eventi e la logica dell'interfaccia utente dallo scambio di dati e troverai un modo molto efficace per creare applicazioni web.