Blazor WebView - App Desktop
Tags: ptbr, blazor, dotnet, braziliandevs
Published: 2021-04-19 20:52:42

Olá Devs! 👨‍💻

Sim, eu desenvolvo aplicações para desktop. Existem necessidades específicas que um software desktop acaba sendo aderente.

Quando falamos sobre desktop hoje, boa parte dos Devs pensa imediatamente em: "Electron". Sei que temos muitas <a href="https://www.electronjs.org/apps" target="_blank">aplicações</a> desenvolvidas assim, já desenvolvi assim, mas o resultado não me agrada muito. Quem sabe depois escrevo um post sobre isso. Para esse tipo de aplicação, minha opção acabou sendo um modelo híbrido, uma mistura de WindowsForms + CefSharp + Nancy. O resultado é bem satisfatório, mas acredito que pode melhorar bastante, e é ai que entra o Blazor WebView.

Estou sempre em busca de novas possibilidades e achei artigos interessantes que me fizeram pensar e querer colocar em prática. Vou aproveitar para conhecer o <a href="https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor" target="_blank">Blazor</a>, já que estou devendo esse estudo faz um tempo. 

Com as novas versões de SDK do .Net, sei que muita coisa vai mudar e/ou melhorar com relação ao Desenvolvimento Desktop, mas vou começar estudando essa alternativa. A ideia é entender o funcionamento e criar algo, simples e leve.

Esse desenvolvimento esta sendo feito com o SDK 6.0 preview e o VS2019. Após a instalação do SDK, você precisa configurar o VS2019 para que ele consiga trabalhar com a versão preview. Para fazer essa configuração é só acessar o menu "Tools -> Options" e ativar a opção conforme na figura.

![alt text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ieuzmfewpthf1w9t8y13.png)

Outro ponto importante é a instalação do WebView2 Runtime, o link esta no final do artigo. 

### Criando o projeto e a solução
```
dotnet new winforms -n BlazorDesktop -f net6.0
dotnet new sln
dotnet sln add BlazorDesktop/BlazorDesktop.csproj
```

### Adicionando o pacote webview
```
dotnet add package Microsoft.AspNetCore.Components.WebView.WindowsForms --version 6.0.0-preview.3.21201.13
```

Criei um repositório que vou atualizar de acordo com as necessidades. Atualizo o post se pintar novidades.

### Repositório
{% github leandroats/blazorwebview no-readme %} 

Prereqs
<a href="https://dotnet.microsoft.com/download/dotnet/6.0" target="_blank">SDK 6.0.100-preview.3</a>

<a href="https://developer.microsoft.com/en-us/microsoft-edge/webview2/#download-section" target="_blank">Microsoft Edge WebView2</a>

Referências
<a href="https://nancyfx.org/" target="_blank">Nancy - Lightweight Web Framework for .net</a>

<a href="https://cefsharp.github.io/" target="_blank">CefSharp - Fast web browser for WinForms and WPF Apps</a>

<a href="https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-6-preview-3/" target="_blank">ASP.NET Core updates in .NET 6 Preview 3</a>

<a href="https://visualstudiomagazine.com/articles/2021/04/09/blazorwebview.aspx" target="_blank">.NET 6 Gets Blazor WebView Controls for WPF, WinForms</a>

<a href="https://docs.microsoft.com/en-us/microsoft-edge/webview2/concepts/distribution" target="_blank">Distribution of apps using WebView2</a>

<a href="https://dotnetcoretutorials.com/2021/03/13/getting-setup-with-net-6-preview/" target="_blank">Getting Setup With .NET 6 Preview</a>


Até a próxima!👊