Sto creando una nuova applicazione Web aziendale e voglio ottenere:
- Usa le migliori tecnologie dei rispettivi regni. Voglio un framework backend affidabile con ORM solido. E voglio il più avanzato framework SPA (applicazione a pagina singola) con l'uso delle funzionalità HTML e Javascript più aggiornate per l'applicazione frontend
- Esporre entità back-end e servizi aziendali per l'utilizzo da diversi tipi di applicazioni - ad esempio applicazioni Web, dispositivi mobili (Android) e possibilmente altri tipi (dispositivi intelligenti, ecc.)
Quindi, per soddisfare entrambi i requisiti, sono propenso a separare completamente la mia applicazione in applicazioni back-end e front-end e organizzare la comunicazione tra di loro utilizzando l'API REST (JSON). Questo è un approccio valido?
Tale separazione non è una soluzione progettuale ovvia, poiché molte tecnologie di applicazione Web hanno livelli di vista 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 di vista, PHP Yii con vista livello, Java JSF / Facelets salva completamente lo stato dei loro componenti sul server). Quindi, ci sono molte tecnologie in giro che propongono un accoppiamento più forte e promettono tempi di sviluppo più rapidi e percorsi più standardizzati. Quindi - devo essere cauto quando inizi a usare tecnologie in un modo che non è ampiamente usato.
A quanto ho capito, il frontend SPA completamente separato di solito nasce dalla necessità di utilizzare API di terze parti. Ma una tale progettazione del suono disaccoppiata quando sia il backend che il frontend sono sviluppati da un'azienda?
La mia scelta di tecnologie attualmente è Java / Spring backend e Angular2 / Web Components / Polymer per frontend - se mi è permesso dirlo. Ma questo è irrilevante per questa domanda, perché questa domanda riguarda il design generale e non la scelta delle tecnologie concrete?
So - I must be cautious when starting to use technologies in manner which is not widely used.
Sì, devi essere cauto se hai intenzione di usare un martello per lanciare la seta. Forse non è lo strumento giusto.