Pergunta

Tenho a oportunidade de reescrever o núcleo de um aplicativo desenvolvido internamente que meu empregador usa para o controle de documentos. Minha lista de requisitos "central" é algo assim:

  • Facilite a importação/exportação para vários formatos (coleta de arquivos + metadados bastante extensos sendo o fator comum)
  • Facilite a adição de novos campos (cuja presença é orientada a dados em vez de global) em vários níveis
  • Introduzir várias novas peças de funcionalidade que violam a premissa fundamental do sistema antigo (basicamente, a estrutura dos metadados em torno dos documentos está passando por uma mudança radical)
  • Mantenha a capacidade de controlar firmemente documentos e relações de metadados e convenções

Eu tenho brincado com uma arquitetura que usa a serialização como seus principais meios de comunicação com o mundo e, até agora, estou satisfeito com os resultados - posso serializar em serializar e desaperializar a partir de uma interface do usuário, uma loja XML e uma loja Banco de dados com facilidade sem modificar as classes principais para acomodar as várias fontes e afundos. Eu considero que isso é fundamentalmente um Arquitetura hexagonal - Ele trata todos os alvos de serialização da mesma maneira (como uma dependência injetável para o método serialize).

Este é o meu primeiro a seguir com essa abordagem, no entanto, e estou me perguntando se alguém tem alguma experiência com ela e quaisquer idéias ou conselhos, se sim.

Foi útil?

Solução

Meu primeiro instinto é que tudo o que depende fortemente da serialização de suas classes principais provavelmente encontrará problemas de versão cabeluda - as mudanças no seu núcleo exigirão modificação simultânea de todos os seus provedores e consumidores de serialização (e provavelmente todas as suas lojas persistentes ), em vez de uma abordagem baseada em serviço/contrato que permitiria que a interface permanecesse estática sempre que possível.

No entanto, é realmente difícil dar qualquer tipo de opinião sem fazer um grande conjunto de suposições sobre como o sistema será usado e evoluirá ao longo do tempo - se você estiver feliz com a abordagem, continue com isso e informe -nos como vai.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top