Pergunta

Estou interessado em ler sobre as várias maneiras outros desenvolvedores e arquitetos lidam com a personalização de certas áreas de suas aplicações para determinados sites. saídas de chamada para o cliente pré implementado e pós-processamento, eventos fazendo o mesmo, permitindo métodos de lógica de negócios para ser substituído, usando estratégias com módulos conectáveis, dados os processos configuráveis, por exemplo, motores de regras, scripting, etc.

A lista poderia continuar, mas eu estou pedindo que usou o que e quais são os prós e contras de cada uma dessas abordagens, bem como o que outras abordagens existem.

Isso pressupõe que não criar um cliente ramo código específico para acomodar essas personalizações.

Foi útil?

Solução

MS está trabalhando em dois quadros diferentes para isso no .NET: o Quadro de extensibilidade gerenciado e System.AddIn.

Provavelmente, as aplicações de forma mais comumente usada expor extensibilidade é através de Dependency Injection / inversão de controle misturado com resolução do tipo de tempo de execução. Isso significa que você deixe uma entidade "injetar" externa da implementação de uma interface em tempo de execução em vez de se ligar a uma implementação específica em tempo de compilação. Seu código não se importa se o seu IRepository é escrito por uma empresa ou por uma terceira parte. Pela codificação contra as interfaces e usando estruturas DI / COI (este link fornece uma grande visão geral do .NET estruturas) você permitir que seu aplicativo para ser facilmente customizável.

Outras dicas

Eu tenderia a construir tudo modular e então adicionando coisas para o programa como o cliente pede para eles. Você pode combinar isso com as configurações do aplicativo que o cliente pode controlar, o que lhes permite adicionar e módulos remove por conta própria. Nesse caso, tudo o que você estaria fazendo está definindo uma configuração padrão.

Uma forma seria a de incorporar uma linguagem de script (Python e JavaScript parece estar popular) e expor pedaços significativos da API através da extensão de scripts. Você pode achar que é mais fácil de implementar partes do seu aplicativo na linguagem de script, também.

Para os produtos com quem trabalho, personalizações que são construídas tanto pelo grupo de serviços para um determinado cliente, ou às vezes pelos próprios clientes, são compartilhadas com o resto da equipe (para coisas que fizemos) e muitas vezes se "productized" em versões posteriores.

Apoiamos a [quase] API de acesso completo, que pode ser usado para fazer [quase] qualquer coisa que os GUIs podem fazer, mas de forma automatizada.

Nós incentivar os clientes a scripts de gravação personalizados e compartilhá-los de volta com a gente. Crescente dos usos disponíveis de um produto através de extensões, quer ser oficialmente suportado, ou permanecer ferramentas de comunidade, ajuda a boa vontade engendram entre sua base de clientes.

Para personalizações que construímos, o trabalho inicial, enquanto cobrado a um cliente específico, pode então ser implementado rapidamente em outros lugares, permitindo que os usuários atuais e futuros mroe flexibilidade ao utilizar o produto.

Eu descobri que a criação de seu aplicativo como uma biblioteca de módulos acessíveis a partir de uma boa linguagem de script embutida ( Lua foi criado exatamente para isso) lhe dá toneladas de flexibilidade, não só para os usuários!; mas para si também.

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