Como faço para "etiqueta branca" meu aplicativo ASP.NET MVC?
-
16-09-2019 - |
Pergunta
Eu tenho um "branco rotulado"Aplicativo instalado nos servidores de vários clientes. Em qualquer instalação, as diferenças incluem conteúdo, folhas de estilo e gráficos, mas também alguma lógica real de código / negócio. Quero que meu servidor TFS construa todos os sabores automaticamente do meu aplicativo. O que são Minhas opções para fazer isso? Por exemplo, devo usar temas? E os sinalizadores de compilação condicional #IF.
PS A questão não é sobre como configurar o servidor de construção - já fiz isso.
Solução
Para a lógica de negócios, eu abstrava as diferenças em bibliotecas separadas e, em seguida, você pode usar um padrão de IOC / DI ou padrão de provedor para resolver a lógica de negócios correta em tempo de execução.
Quanto ao conteúdo, examinaria os temas. Essencialmente, você pode fazer com que seu servidor de compilação crie todo o código uma vez e, ao empacotar o código, escolhe quais conjuntos você precisa e usar a configuração apropriada e escolher a pasta de temas aprovados para o cliente em questão.
Não gosto de usar as diretivas # neste caso. Se você pensar bem, seus testes de unidade teriam que executar para cada condicional que você tem. Se você remover os condicionais e abstrair as diferenças que seus testes de unidade podem ser executados em todos os conjuntos flugable de uma só vez.
Outras dicas
- Conteúdo /imagem - Você pode fazer sua própria extensão HtmlHelper /Urlhelper para fazer html url.content () para capturar coisas certas para clientes certos, além de copiar os arquivos necessários das pastas corretas (que é simples, /content + /contentCustomer1, 2, ...).
- Não há resposta única, suponho. Uma resposta fácil seria mover seu pedido.calculate () método para uma classe parcial, para que você tenha
- OrderPartsForCustomer1.cs
- OrderPartsForCustomer2.Cs
onde você terá
public partial class Order
{
public Money Calculate()
{
}
}
Você apenas incluirá as classes .CS necessárias e não confunde seu código com #ifs.
Se você deseja um código comum para todos e substitui apenas para clientes específicos, você pode ter OrderPartScommon.cs, que você copiará/usará se não houver um excesso específico do cliente.