¿Cómo implementaría una aplicación web extensible? En lo que estoy pensando es en una aplicación web similar a Jenkins o Hudson que proporciona soporte de complementos. Si bien es obvio para mí cómo se pueden ubicar y cargar los complementos, no sé cómo se pueden integrar en la arquitectura general. Estoy especialmente inseguro sobre los siguientes puntos.
¿Cómo puede un complemento cambiar la vista, por ejemplo, agregar elementos de entrada a un formulario?
Mi primera idea sería que un complemento puede registrar parciales / fragmentos para una determinada forma.
Ejemplo: complemento de boletín informativo que registra un fragmento de casilla de verificación de boletín informativo típico que se mostrará en la vista de registro del usuario.
¿Cómo puede reaccionar un complemento a las solicitudes entrantes?
Una vez más, un enfoque directo sería proporcionar oyentes para ciertas solicitudes o acciones, por ejemplo, solicitud POST a / usuario.
¿Cómo podría un complemento conservar datos?
Supongo que esta es una situación en la que las soluciones de almacenamiento de datos NoSQL serían superiores a las bases de datos relacionales.
Agradecería cualquier comentario, idea y experiencia (tal vez incluso haya un patrón de diseño) que tenga con respecto a las aplicaciones web extensibles.