Recursos de prisma WPF de melhor prática
Pergunta
Eu tenho um aplicativo AA WPF Prism Desktop com alguns módulos. No passado, coloquei todos os meus recursos localizados em arquivos de recursos comuns na montagem da infraestrutura e o referenciei em todos os módulos.
Mas, ultimamente, tenho me perguntado se essa é realmente a abordagem certa da perspectiva de manutenção. Em essência, também meio que quebra a modularidade. Ter arquivos de recursos específicos do módulo nos próprios módulos seria uma abordagem melhor a longo prazo?
Todos os pensamentos apreciados.
Solução
No que diz respeito a um dos principais alvos do Prism, a modularidade parece óbvia colocar seus recursos apenas na assembléia apropriada. Compartilhar recursos por meio de uma montagem centralizada é o oposto da modularidade. Fazendo isso, a maneira centralizada lhe dará outro tipo de inferno da DLL no momento em que você deseja adicionar mais módulos (opcionais). Você precisará atualizar a montagem comum sem o conhecimento dos módulos que usam a montagem. E determinar qual módulo está presente apenas novamente viola a própria modularidade. A outra maneira é sempre atualizar a montagem comum para a versão mais recente. Faça o que fizer, seguir a abordagem centralizada o força a construir todos os seus módulos compatíveis com versões anteriores.
Este é o meu ponto de vista no momento. Mas, tanto quanto estou trabalhando com Prism por apenas algumas semanas agora, não tenho certeza se minha declaração é assim que deve ser feita.
Outras dicas
Eu nunca tenho referências entre os módulos individuais ao usar o prisma (a menos que um módulo seja realmente um aprimoramento de outro). Costumo colocar recursos compartilhados, interfaces etc. em uma montagem "comum" referenciada por todos os módulos e a montagem que contém o shell. As coisas que implementam uma interface são recuperadas através do contorno do COI e a implementação é colocada no módulo onde 'pertence'.
Enquanto você escreve - tê -los no módulo de infraestrutura quebra uma das idéias por trás do prism.