Pergunta

Estou pensando em reescrever uma parte de nosso aplicativo em C# (atualmente código VB6 legado).O módulo que estou iniciando é responsável por importar dados de diversos sistemas para nosso banco de dados.Cerca de 5 a 6 vezes por ano, um novo cliente nos pede para escrever uma nova importação para o sistema que ele usa.Atualmente, isso exige o lançamento de uma nova versão do nosso software para cada nova opção de importação que adicionamos ao aplicativo.

Um dos objetivos da reescrita é fazer com que o aplicativo suporte plug-ins.Cada nova importação pode se tornar um assembly separado que o aplicativo host reconhecerá e permitirá que o usuário final interaja.Esperamos que isso simplifique a vida até certo ponto, pois podemos simplesmente colocar um novo assembly no diretório e fazer com que ele seja reconhecido e usado pelo aplicativo principal (host).

Um dos itens com os quais estou lutando está relacionado às diferenças entre as opções de importação que oferecemos suporte atualmente.Em alguns casos, permitimos que o usuário aponte para um diretório e leia todos os arquivos desse diretório em nosso sistema.Em outros casos, permitimos que apontem para um único arquivo e importem seu conteúdo.Além disso, algumas importações têm uma restrição de intervalo de datas que o usuário aplica, enquanto outras não.

Minha pergunta é: como posso projetar o aplicativo de uma maneira que permita alguma flexibilidade entre as importações que construímos e suportamos e, ao mesmo tempo, implementar uma interface comum que permitirá ao aplicativo host reconhecer facilmente os plug-ins e as opções que cada um expõe ao usuário?

Foi útil?

Solução

Eu recomendo que você dê uma olhada no Managed Add-In Framework fornecido com o .NET 3.5.O Equipe de complemento postou alguns exemplos e ferramentas em Site CodePlex também..

Outras dicas

.Net 3.5 possui o namespace system.Addin.

Este tópico também contém algumas boas informações para versões mais antigas do framework:
http://forums.devshed.com/net-development-87/system-plugin-532149.html

para a teoria, dê uma olhada no padrão de plug-in in martin fowlers Padrões de arquitetura de aplicativos corporativos

para um exemplo interessante, dê uma olhada neste tutorial: Arquitetura de plug-ins usando C#

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