Como você implementaria um aplicativo da web extensível? O que estou pensando é em um aplicativo da Web semelhante ao Jenkins ou Hudson, que fornece suporte a plug-in. Embora seja óbvio para mim como os plug-ins podem ser localizados e carregados, não sei como eles podem ser integrados à arquitetura geral. Eu sou especialmente incerto sobre os seguintes pontos.
Como um plug-in pode alterar a exibição, por exemplo, adicionar elementos de entrada a um formulário?
Minha primeira idéia seria que um plug-in possa registrar parciais / fragmentos para um determinado formulário.
Exemplo: plug-in de boletim informativo que registra um fragmento de caixa de seleção de boletim informativo típico que será renderizado na visualização de registro do usuário.
Como um plug-in pode reagir a solicitações recebidas?
Novamente, uma abordagem direta seria fornecer ouvintes para determinadas solicitações ou ações, por exemplo, solicitação POST para / usuário.
Como um plug-in poderia persistir dados?
Estou assumindo que esta é uma situação em que as soluções de armazenamento de dados NoSQL seriam superiores aos bancos de dados relacionais.
Eu gostaria de receber comentários, idéias e experiências (talvez até exista um padrão de design) que você tenha em relação a aplicativos da web extensíveis.