Um dos objetivos da Microsoft para os lançamentos recentes do Windows era melhorar a experiência do desenvolvedor, com o objetivo de torná-lo a plataforma preferida para o desenvolvimento de aplicativos modernos. Esse objetivo levou ao lançamento dos subsistemas Windows para Linux e Android, armazenamento Dev Drive resiliente baseado no sistema de arquivos ReFS, o gerenciador de pacotes WinGet e o painel de controle Dev Home.
Essas ferramentas ajudam a resolver muitos dos principais problemas enfrentados pelos desenvolvedores, independentemente do sistema operacional que usam. Juntos, eles oferecem suporte ao desenvolvimento multiplataforma, ajudando você a proteger seu código, gerenciar seu conjunto de ferramentas e acompanhar os recursos usados por seus aplicativos e ferramentas.
Outra área importante é disponibilizar o código de desenvolvimento para usuários e dispositivos remotos, especialmente quando você está testando aplicativos móveis e da web. Isso nos leva aos túneis de desenvolvimento da Microsoft, que recentemente foram disponibilizados no Visual Studio 2022.
Túneis de entrada e desenvolvimento
Ferramentas de entrada, como túneis de desenvolvimento, combinam proxies reversos com uma API e um gateway da Web, encapsulando redes externas em seu PC de desenvolvimento e garantindo a passagem apenas do tráfego que você deseja.
O acesso a recursos locais é essencial ao criar aplicativos modernos e nativos da nuvem, trabalhar com APIs RESTful remotas e fornecer suas próprias APIs. Leva tempo para que os administradores de rede configurem proxies em seu firewall – tempo que atrapalha testes e demonstrações ad hoc.
Em vez disso, podemos refletir o acesso ao código de depuração através de um serviço de nuvem, usando-o para fornecer um endereço IP público e, em alguns casos, um nome de domínio totalmente qualificado. Eles geralmente operam por meio de uma porta não padrão, reduzindo o risco de um invasor se conectar a um serviço possivelmente com erros.
Provavelmente a ferramenta mais conhecida desse tipo é o ngrok, que oferece planos gratuitos e pagos. No entanto, os túneis de desenvolvimento, introduzidos recentemente como parte do Visual Studio 2022 v17.6, têm a mesma finalidade. Inicialmente projetados como uma ferramenta de depuração, os túneis de desenvolvimento expõem uma porta específica da sua máquina local à Internet pública, para que você possa acessá-la de outros dispositivos e serviços. Você pode até usá-lo para fornecer acesso de demonstração para partes interessadas e clientes, dando-lhes informações sobre o trabalho em andamento.
Talvez o benefício mais significativo de um serviço como os túneis de desenvolvimento seja que ele permite que você trabalhe com endpoints e APIs reais, em vez de ter que criar simulações e usar dados sintéticos ou de amostra. Em vez de gastar tempo construindo e validando simulações, você pode se concentrar em escrever código. Essa abordagem reduz o risco de seu aplicativo ser projetado em torno de uma simulação com erros, além de tornar muito mais fácil testar e depurar o código.
Introdução aos túneis de desenvolvimento
Há duas maneiras de configurar túneis de desenvolvimento, no Visual Studio 2022 e em sua própria interface de linha de comando.
Configurar um túnel de desenvolvimento no Visual Studio 2022 é relativamente simples. Você pode encontrar as ferramentas de gerenciamento de túnel de desenvolvimento no menu Exibir, em Outras janelas. Selecione ‘túneis de desenvolvimento’ para abrir uma lista de túneis disponíveis e clique no sinal de mais para criar uma nova instância.
Os túneis de desenvolvimento estão associados à conta usada para registrar o Visual Studio, portanto, pode ser um ID Entra (que costumava ser o Azure Active Directory) ou uma conta Microsoft de consumidor (MSA). O último é mais provável para um indivíduo que usa a edição Community do Visual Studio para desenvolvimento pessoal ou de código aberto.
Comece nomeando seu túnel. Você pode criar uma biblioteca de diferentes combinações de nomes de túneis, tipos e controles de acesso que podem ser inseridos e retirados conforme necessário. Os túneis podem ser temporários ou permanentes, e os túneis temporários recebem uma nova URL sempre que você inicia o Visual Studio.
A escolha final é escolher quem tem acesso. Os túneis privados estão vinculados ao ID do usuário que criou o túnel, enquanto os túneis organizacionais são apenas para membros do mesmo grupo Entra que o usuário. Embora você possa criar um escopo organizacional para um túnel com um MSA de consumidor, não faz sentido fazer isso.
Se você não está preocupado com quem tem acesso ou se está expondo um túnel temporário aos clientes como parte de uma demonstração ou de um teste em maior escala, você pode escolher a opção pública. Isso não requer autenticação, portanto deve ser usado somente quando você confia nos usuários ou quando a URL usada será reciclada quando a demonstração for concluída.
O acesso ao túnel é controlado por meio de tokens. Eles podem ser acessados clicando com o botão direito do mouse no túnel na lista de túneis de desenvolvimento, que os copia para a área de transferência. Depois de ter um token e precisar acessar um serviço, por exemplo, se estiver consultando um serviço RESTful ou um endpoint gRPC, você poderá adicionar um cabeçalho HTTP temporário X-Tunnel-Authorization à sua chamada para autorizar um cliente.
Usando túneis de desenvolvimento no Visual Studio 2022
Para iniciar um túnel de dentro do Visual Studio, basta escolher um túnel para usar na visualização de inicialização do aplicativo e, em seguida, criar e executar uma sessão de depuração. Isto abrirá uma janela do navegador local que está conectada ao ponto final hospedado pela Microsoft para o túnel. Se você estiver usando um túnel autenticado com um aplicativo Web, serão solicitadas credenciais ao acessar o URL gerado. Você pode copiar o URL do túnel e compartilhá-lo com colegas conforme necessário.
Role para a direita da janela Visual Studio Dev Tunnels para gerenciar seu túnel, clicando no ícone de gerenciamento. Isso mostra a conexão atual de um túnel, detalhando o aplicativo que está sendo encapsulado e a porta usada. Nessa visualização, clique em Inspecionar para iniciar um inspetor de rede hospedado no Edge como uma ferramenta de depuração adicional, para ajudar a entender como seu código funciona com um navegador ou qualquer outro cliente.
Usando a CLI de túneis de desenvolvimento
Você não está limitado a usar túneis de desenvolvimento com o Visual Studio, pois eles também podem ser gerenciados usando uma CLI. Ele pode ser baixado do Winget para Windows e também está disponível para macOS e Linux.
Os túneis de desenvolvimento baseados em CLI podem até ser criados com contas GitHub (se você instalar as ferramentas GitHub separadas), bem como IDs Entra e MSAs, permitindo que você use logins de código de dispositivo GitHub como uma alternativa à opção de autenticação padrão baseada em navegador. Depois de fazer login na máquina na qual deseja hospedar o túnel, use o devtunnel host
comando para criar um novo túnel. Este comando permite escolher um nome para um túnel, as portas que ele encaminhará e se o acesso anônimo será permitido.
Depois que o túnel for criado, será apresentado o URI do túnel, que pode ser copiado e usado no código que você está testando ou por terceiros. Também é possível mapear portas, portanto, um aplicativo que procura uma API na porta 3000 pode acessar um túnel por meio dessa porta. Isso ocorre porque a tecnologia subjacente usada pelos túneis de desenvolvimento é baseada no encaminhamento de porta SSH, fornecendo um front-end fácil de usar para um recurso muitas vezes complexo.
A CLI fornece ferramentas para gerenciar seus túneis, incluindo listá-los, mostrar detalhes de um túnel específico e criar túneis persistentes que podem ser usados como parte de testes de cliente para dispositivos móveis. Existem mais opções na CLI do que na contraparte do Visual Studio. Por exemplo, usando a CLI, você pode criar túneis com vida útil fixa ou marcar túneis com descrições que podem ser usadas para procurar túneis específicos. Outros comandos adicionam portas e protocolos a um túnel, permitindo especificar HTTP ou HTTPS.
O medidor está funcionando
Observe que há limites para o uso do túnel. Uma assinatura Enterprise oferece 10 túneis por usuário, com limite de largura de banda de 5 GB. Outros limites controlam o número de conexões e portas suportadas por túnel, bem como as taxas de solicitação e transferência. Isso significa que você não deve esperar poder usar túneis de desenvolvimento para testar a resistência de um aplicativo. Em vez disso, eles se destinam a testes de recursos e integração, bem como para verificar rapidamente a aparência do seu código em dispositivos clientes.
Ter um proxy de entrada como túneis de desenvolvimento dentro (e fora) do Visual Studio deve simplificar a construção de cadeias de ferramentas de desenvolvimento. Até agora, se você estivesse criando e testando, digamos, aplicativos do Teams, precisaria usar o ngrok ou uma ferramenta semelhante de terceiros para vincular seu sistema de desenvolvimento ao locatário do Teams da sua organização. Agora é simplesmente parte do seu kit de ferramentas existente. Não é bom quando a vida fica mais simples?