Sto creando una nuova applicazione web aziendale e voglio raggiungere:
- Utilizza le migliori tecnologie dai loro rispettivi reami. Voglio un framework di backend affidabile con ORM solido. E voglio il più avanzato framework SPA (applicazione a singola pagina) con l'uso delle più aggiornate funzionalità HTML e Javascript per l'applicazione frontend
- Esporre le entità di backend e i servizi aziendali per l'utilizzo da diversi tipi di applicazioni, ad es. applicazioni web, dispositivi mobili (Android) e possibilmente altri tipi (dispositivi intelligenti, ecc.)
Quindi, per soddisfare entrambi i requisiti, sono incline a separare completamente la mia applicazione nelle applicazioni backend e frontend e organizzare la comunicazione tra loro utilizzando REST API (JSON). Questo approccio sonoro?
Tale separazione non è una soluzione di progettazione evidente, perché molte tecnologie di applicazioni Web hanno livelli di visualizzazione integrati in cui l'applicazione lato server controlla più o meno la generazione della vista e gestisce parzialmente le risposte dalla vista (ad esempio SpringMVC con livello vista, PHP Yii con view layer, Java JSF / Facelets salva completamente lo stato dei loro componenti sul server). Quindi, ci sono molte tecnologie in giro che propongono un accoppiamento più strong e promettono tempi di sviluppo più rapidi e più percorsi standard. Quindi - Devo essere prudente quando inizi a utilizzare le tecnologie in modo non ampiamente utilizzato.
Come capisco, il frontend SPA completamente separato nasce solitamente dalla necessità di utilizzare API di terze parti. Ma è un design del suono disaccoppiato quando sia il backend che il frontend sono sviluppati da una società?
La mia scelta di tecnologie attualmente è Java / Spring backend e Angular2 / Web Components / Polymer per frontend - se posso dirlo. Ma questo è irrilevante per questa domanda, perché questa domanda riguarda il design generale e non la scelta delle tecnologie concrete?