Sto lavorando su un'applicazione in cui l'interfaccia lato client e il server back-end sono applicazioni completamente separate. Il back-end è scritto in Ruby e serve solo JSON via HTTP. Il client è un'applicazione di browser a pagina singola completamente "statica" che comunica con l'API JSON. Ora ho bisogno di creare un'interfaccia amministrativa che verrà utilizzata per curare il contenuto servito dall'API JSON.
Vedo un certo numero di modi in cui posso concepire questo:
-
Estendi l'applicazione a pagina singola esistente. Inizialmente questo sembrava il modo più ovvio per farlo perché ho già un sacco di codice esistente per comunicare con l'API. Il rovescio della medaglia che vedo qui è che la sezione di amministrazione si sentirebbe molto attaccata. Le preoccupazioni dell'amministratore sono in gran parte ortogonali rispetto alla funzionalità della SPA esistente e non sono convinto che la quantità di riutilizzo del codice potrebbe effettivamente giustificare la combinazione delle due applicazioni.
-
Un'applicazione a pagina singola separata. Questo potrebbe funzionare bene. Dovrei duplicare del codice dalla SPA esistente, ma penso che abbia un po 'più senso dal momento che l'interfaccia di amministrazione sembra davvero un'applicazione separata. L'area di amministrazione non ha bisogno di un'interfaccia utente spettacolare, tuttavia, e un'applicazione web tradizionale resa server potrebbe essere un modo per ridurre lo sforzo di sviluppo richiesto per creare l'interfaccia di amministrazione.
-
Un'applicazione web resa dal server. Tutte le applicazioni Web renderizzate dal server che ho costruito in passato sono state direttamente collegate a un database. Questo, tuttavia, dovrebbe comunicare con l'API JSON su ogni richiesta. Sono sicuro che sia possibile ma non mi è molto familiare e non vedo molte discussioni su questo approccio.
-
Un'applicazione Web resa dal server nello stesso processo dell'API JSON. In questo modo le pagine di rendering del codice per l'interfaccia di amministrazione possono accedere direttamente al livello db / modello e non è necessario effettuare richieste HTTP separate per il rendering della pagina. La parte che non mi piace di questo è che rispetta il codice API con il codice UI e preferirei tenerle completamente separate.
Ho preso in considerazione i compromessi in ciascuno di questi casi e sarei molto interessato a sentire le opinioni altrui. Hai sviluppato un'architettura simile? Quale approccio hai seguito e perché?