Desenvolvimento

Que o .NET Core roda no Windows e no Linux isso é mais que sabido. Mas você pode precisar de configurações específicas por tipo de SO. Paths necessários para executar alguma tarefa podem divergir, e esse é o caso do docker. O endereço da API do Docker Daemon é diferente no Windows e no Linux. No Linux você usa unix sockets, enquanto no Windows named pipes.

Então vou apresentar o princípio que permite fazer essa troca de configuração e a partir daí você pode escolher por pelo menos 2 abordagens.

A mágica está na classe Environment e na propriedade estática OSVersion. Na prática a enum PlatformID presente em Environment.OSVersion.Platform é descrita como abaixo:

Isso permite que você possa possa segmentar nós de um único arquivo, como no exemplo abaixo, ou gerar diversos arquivos, um para cada plataforma.

Respeitando o exemplo do arquivo de configuração acima, você pode usar a seguinte estratégia para configurar a injeção de dependência com uma instância configurada:

No exemplo estou levando em conta apenas Windows e Linux, SO’s de referência para a minha aplicação, já que estou falando de gerenciamento de containers Docker, portanto estou realmente ignorando versões antigas do Windows, Xbox, mas de forma equivocada estou ignorando Mac. Vou tratar de acertar isso, já que esse é um exemplo real.

 

 

Saiba mais

Para mais posts como esse você pode curtir a página no Facebook, ou seguir no Twitter. Todos os vídeos são publicados no meu canal do Youtube (se inscreva e não esqueça de ativar as notificações). Discutimos arquitetura e compartilho muitos links legais no Grupo Arquitetura de Softwate | .NET do Facebook (que também possui um grupo de chat no Telegram).

Se quiser saber um pouco mais sobre mim, visite a página Carreira aqui no site ou no Linkedin. Você pode entrar em contato diretamente pelo Telegram ou Email !