fbpx
Dev Desktop .NET Core: Windows ou Linux?
Publicado em: sábado, 23 de mar de 2019

Esse post fala sobre ambiente de desenvolvimento. O lugar onde você está escrevendo código, compilando, rodando, debugando, e testando o que está produzindo.

Aqui vão recomendações para quem está começando. Essas recomendações são amparadas pela minha experiência acompanhando e ajudando/suportando a comunidade e grupos de discussão.

TL;DR;

  • Desenvolva no Windows (use o windows no host, não em uma VM).
  • Hospede no linux como Linux Containers / ou direto no host linux.

.NET Core funciona bem no Linux?

Sim, funciona e beira a perfeição. Realizar deploy em um servidor headless, consumindo extremamente pouco recursos ou fazendo deploy em linux containers é o que queríamos e sequer sabíamos disso. Docker está aí e a cada dia se consolida sem concorrente.

Se em 2019, você está pensando em desenvolver serviços, microsserviços, ou aplicações web de qualquer natureza, realizar o deploy em containers linux ou no linux deve estar no seu radar.

Meu desktop de Desenvolvimento: Windows ou Linux?

Um dos maiores movimentos que vejo nos últimos tempos é de programadores PHP vindo para .NET, principalmente com .NET Core. E aqui vai uma questão importante.


Há a possibilidade e probabilidade de você nunca ter usado visual studio na vida.
Há a probabilidade de seu primeiro contato com um debugger tenha ocorrido no Chrome ou Firefox.
Saiba que aqui, no nosso mundo, debug é fundamental e está presente desde o princípio.

Usamos breackpoints e debugger no dia-a-dia, para tudo. Não importa o tipo de código.

Assista o vídeo abaixo para entender o básico de debugging. É uma experiência transformadora.

Além da galera que vem do PHP, tem os novatos. A galera que está na faculdade, saindo da faculdade, ou mesmo migrando de outras tecnologias.

O ponto-chave é: Nada se compara ao Visual Studio, principalmente pois o visual studio é uma full featured IDE.

Uma IDE não é um mero editor de código, uma IDE é um Ambiente de Desenvolvimento Integrado, uma categoria não alcançada por VSCode, ATOM, Sublime. Quem pode se comparar melhor é o Eclipse, NetBeans, InteliJ e outros.

Isso quer dizer que você poderá usar VSCode no seu dia-a-dia, direto do Linux, mas você nunca terá uma experiência similar à oferecida pelo Visual Studio. E para quem está chegando agora, trabalhar com Visual Studio é o comum, o recomendado, o que você encontrará nas empresas, mesmo que seu objetivo seja realizar implantações no linux.

Mas qual é a diferença entre VSCode e Visual Studio?

Visual Studio é mais estável para .NET Core, empacota todos os recursos de forma integrada. Permite o desenvolvimento com os mais variados tipos de projetos .NET Framework e .NET Core. Oferece ferramentas de testes, debug, refactoring, packaging, publish e muito mais.

É desenhado para facilitar sua experiência, tornando ocultas algumas burocracias.

Oferece suporte a debug tanto de processos .NET no Windows ou no linux (com ou sem containers), a propósito oferece suporte a docker e se integra facilmente com containers docker para que você faça debug de linux containers direto da sua IDE.

Visual Studio Code é ruim?

Eu não disse isso, eu digo que:

Se você está começando agora e opta pelo VSCode, você vai passar por desafios e uma experiência que não é a melhor disponível. Nem de longe o visual studio code é ou pode ser considerado ruim, eu não conheço quem diga algo assim. No entanto o VSCode não oferece as mesmas features.

E Mac, devo começar no Mac?

Se seu objetivo é se profissionalizar: não!

De que adianta você começar no Mac, mas quando chegar em uma empresa, onde receberá um notebook ou desktop windows, não saberá fazer nada ou terá uma curva de aprendizado maior? Você será produtivo no windows ou ficará de mimimi querendo um macbook pro?

Seria interessante criar uma VM Windows então?

Se você pretende trabalhar com serviços, aplicações web, microsserviços e jobs rodando sobre Linux Containers, não! Ter o windows em uma VM não é uma opção boa para quem quer trabalhar com esse workload. Principalmente pois para trabalhar com Linux Containers no windows, integrado ao Visual Studio, você precisará do Docker Desktop for Windows que por sua vez demanda features que são herdadas do Hyper-v. Habilitar essas features estando dentro de uma VM exige conhecimento avançado e talvez sequer seja possível no teu setup.

De qualquer forma, container Windows é uma coisa, e container Linux é outra. Não é uma mera escolha boba. Você pode olhar em gago.io/docker tem muito conteúdo, resultado de mais de 6 anos falando de containers para a galera do universo .NET. Sobre esse assunto, o resumo mais curto que posso fazer é: queremos usar containers Linux, mas em projetos muito específicos, quando não é possível, não usamos containers, e em outros mais peculiares ainda, usamos containers Windows. Se você está na dúvida entre containers Linux ou containers Windows, você ainda não entendeu a diferença. Containers Windows é para quem não pode, de forma alguma, usar containers Linux.

Mas eu sou experiente com .NET Core e .NET Framework, essas recomendações servem para mim?

Não. Essas recomendações são para quem está começando.

Para quem tem uma boa experiência com .NET em geral, você vai saber se virar em qualquer lugar. Você saberá que é hora de fechar e abrir o VS Code, na hora que uma sintaxe que você tem certeza de que está correta, acusar erro. Você saberá produzir os scripts de criação de containers e debug em containers, manualmente.

Os dilemas para quem já está familiarizado com a plataforma são outros. Qualquer instabilidade é percebida como instabilidade e seu tempo reação a um problema no editor, ou a falta de alguma configuração é menor. Você já sabe o que é certo, já sabe o que pode dar errado, e perderá menos tempo até descobrir que o VSCode que está bugado. Saberá quando usar o Visual Studio e suas features exclusivas. Saberá resolver seus próprios problemas, quando sua equipe de infra disser que não suporta desktops linux ou mac.

Enfim, você tem conhecimento para contornar qualquer desafio. Por mais que leve um tempinho, isso não tem muito potencial de te fazer desistir do .NET, no máximo poderá te fazer repensar o VsCode para .NET. Em contraponto, o novato, esse tem potencial de desistir, ir para Java, para Node, para Python, Ruby talvez. Esse cara tem mais potencial para desistir, para simplesmente parar de investir seu tempo em aprender a tecnologia.

Conclusão

Minha opinião é simples: Se está começando, seu setup é Windows 10 PRO (não virtualizado), com Visual Studio e Docker Desktop for Windows. E VSCode para qualquer projeto baseado em JS/TS.

Se for experiente, não importa, você já é grandinho para fazer suas escolhas, arcando com os riscos, problemas, mas também os prazeres oferecidos por estas.

O Cloud Native .NET é meu principal projeto.

Onde empenho energia para ajudar, acompanhar, direcionar Desenvolvedores, Líderes Técnicos e jovens Arquitetos na jornada Cloud Native.

Conduzo entregando a maior e mais completa stack de tecnologias do mercado.

Ao trabalhar com desenvolvedores experientes, eu consigo usar seu aprendizado com .NET, banco de dados, e arquitetura para encurtar a jornada.

Ao restringir à desenvolvedores .NET eu consigo usar do contexto de tecnologias e problemas do seu dia-a-dia, coisas que você conhece hoje, como WCF, WebForms, IIS e MVC, por exemplo, para mostrar a comparação entre o que você conhece e o que está sendo apresentado.

É assim que construímos fundamentos sólidos, digerindo a complexidade com didática, tornando o complexo, simples.

É assim que conseguimos tornar uma jornada densa, em um pacote de ~4 meses.

Eu não acredito que um desenvolvedor possa entender uma tecnologia sem compreender seus fundamentos. Ele no máximo consegue ser produtivo, mas isso não faz desse desenvolvedor um bom tomador de decisões técnicas.

É preciso entender os fundamentos para conseguir tomar boas decisões.

6 Comentários

  1. Alexandre Silva

    Rapaz, disse tudo nesse artigo, simplesmente perfeito… Eu trabalho com o VS desde os primórdios (não lembro se no VB3 já era esse o nome pacote, mas de lá pra cá sempre gostei dos pacotes de dev da MS), hoje eu utilizo muito o VSCode, mas não para o C# (a não ser se for só pra dar uma olhada rápida), uso ele para o desenvolvimento de FrontEnd Angular, React, para o NodeJS e coisas do tipo, mas falou em C# eu não abro mão do VS não, e tem que ser Windows 10 mesmo, no mac eu acho horrível… rsrsrs…

    Responder
    • Luiz Carlos Faria

      Passa rápido, sou dessa época também! E to na mesma, uso VSCode para projetos JS/TS e VS para .NET em geral.

      Responder
  2. Vinicius Mamoré

    Bacana Gago, mais um post fantástico, to indo atrás da minha licença Pro, abração!

    Responder
    • Luiz Carlos Faria

      Obrigado Vinicius!

      Responder
  3. Rogério dos Santos Fernandes

    Muito bom! Eu fico feliz que a Microsoft e a comunidade .Net vem construindo pontes e não barreiras, então temos muita opção. O legal de usar o VSCode na minha visão é que faz com que o Dev tenha que conhecer o .Net CLI logo de cara, pra rodar e testar o projeto. Mas realmente o VSCode não está tão estável ainda (creio que vai chegar lá) pro C# como o querido Visual Studio.

    Responder
  4. Rodrigo Tognin

    Legal Luiz. Como estou começando, é melhor não querer ter algumas “dores de cabeça”, rsrsrs.
    Tenho meus projetinhos PHP no VSCode, mas to adaptando algumas coisas do Delphi para C# e está sendo tranquilo pois o VS está me ajudando com coisas que eu não sabia.

    Responder

Enviar um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

[docker de a a z]

Lives

Fique de olho nas lives

Fique de olho nas lives no meu canal do Youtube, no Canal .NET e nos Grupos do Facebook e Instagram.

Aceleradores

Existem diversas formas de viabilizar o suporte ao teu projeto. Seja com os treinamentos, consultoria, mentorias em grupo.