Come implementeresti un'applicazione web estensibile? Quello a cui sto pensando è un'applicazione web simile a Jenkins o Hudson che fornisce supporto plug-in. Mentre è ovvio per me come i plug-in possano essere localizzati e caricati, non so come possano essere integrati all'interno dell'architettura generale. Sono particolarmente incerto sui seguenti punti.
Come può un plug-in modificare la vista, ad es. aggiungi elementi di input a un modulo?
La mia prima idea sarebbe che un plug-in possa registrare partial / frammenti per un determinato modulo.
Esempio: Plug-in per la newsletter che registra un tipico frammento della casella di controllo della newsletter che verrà visualizzato nella vista di registrazione dell'utente.
Come può un plug-in reagire alle richieste in arrivo?
Ancora una volta, un approccio diretto sarebbe quello di fornire agli ascoltatori determinate richieste o azioni, ad es. Richiesta POST a / utente.
Come può un plug-in conservare i dati?
Suppongo che questa sia una situazione in cui le soluzioni di archiviazione dati NoSQL sarebbero superiori ai database relazionali.
Apprezzerei qualsiasi commento, idea ed esperienza (forse c'è anche un modello di design) che hai riguardo alle applicazioni web estendibili.