Existem diversas opções de frameworks SPA disponíveis e é difícil saber escolher qual é o melhor, agora a Microsoft está investindo em seu próprio framework SPA e ele é bem diferente dos demais. Conheça o Blazor!
Blazor. (Browser + Razor).
O nome é interessante mas o que o Blazor tem de inovação é mais interessante ainda!
O que é o Blazor?
O Blazor é um framework Web baseado nas tecnologias Web já existentes como HTML e CSS mas usa C# e Razor ao invés de JavaScript.
Como assim? E como o browser vai entender .NET?
O Blazor roda no browser via WebAssembly o que é um de seus maiores diferenciais!
Para quem não conhece o WebAssembly o que tudo indica será o futuro da Web. É como se o Browser funcionasse como uma máquina virtual rodando um código binário (WASM) que é quase tão rápido como código nativo de máquina e possui performance muito superior ao JavaScript.
O WebAssembly está sob a responsabilidade do W3C e já é suportado pela maioria dos browsers modernos.
É possível rodar OpenGL, Banco de dados e etc. Inclusive o engine Unreal 4 já foi portado para WebAssembly assim como o .NET Core está passando pela portabilidade.
Hey Desenvolvedor Web! É melhor começar a ficar de olho nisso hein?
Por que usar .NET no Browser?
O desenvolvimento da Web melhorou de muitas maneiras ao longo dos anos, mas a construção de aplicativos web modernos ainda representa desafios. O uso do .NET no navegador oferece muitas vantagens que podem ajudar a tornar o desenvolvimento web mais fácil e mais produtivo:
- Estável e consistente: o .NET oferece APIs padrão, ferramentas e infraestrutura de construção em todas as plataformas .NET que são estáveis, ricas em recursos e fáceis de usar.
- Linguagens inovadoras modernas: linguagens .NET como C# e F# tornam a programação mais fácil e continuam melhorando com novos recursos inovadores na linguagem.
- Ferramentas líderes da indústria: a família de produtos Visual Studio oferece uma excelente experiência de desenvolvimento .NET no Windows, Linux e MacOS.
- Rápido e escalável: o .NET possui um longo histórico de desempenho, confiabilidade e segurança para desenvolvimento web no servidor. Usar o .NET como um Stack completo facilita a criação de aplicativos rápidos, confiáveis e seguros.
O que o Blazor oferece?
O Blazor é um projeto experimental, recém anunciado pela Microsoft como parte do Stack do ASP.NET.
O Blazor possui todas as features de um framework SPA moderno:
- Utiliza o conceito de Component Model
- Roteamento
- Layouts
- Formulários e Validações
- Dependency Injection nativo
- Interoperabilidade com JavaScript
- Atualização automática do browser durante desenvolvimento
- Renderização server-side
- Debug em .NET diretamente pela IDE e pelo browser
- IntelliSense e Tooling
- Realiza o publishing diminuindo (comprimindo) o tamanho da App
PS – Se o browser não for compatível com WebAssembly o Blazor tem a capacidade de oferecer o asm.js permitindo a mesma experiência até no IE 9 por exemplo.
Futuro da Web?
Enquanto todos os frameworks SPA de mercado são baseados em JavaScript (ou TypeScript) o Blazor entrega um código nativo rodando em performance superior e com muito mais segurança.
Se escrever um código em TypeScript para transpilar JS já é muito mais agradável do que escrever JS puro, imagine poder escrever sua aplicação inteira em .NET?
O JavaScript é atualmente considerado o Assembly da internet, mas na minha visão com a adoção do WebAssembly isto muda totalmente! Até por que qualquer linguagem pode gerar WebAssembly e se beneficiar de todas suas vantagens.
A pergunta que fica:
Qual será o futuro do JavaScript?
Minhas impressões sobre a adoção do Blazor
Pontos positivos:
- Entrega WebAssembly (já sabemos que é vantagem)
- Possui todas as features de um framework SPA
- Permite a reciclagem de conhecimento uma vez que usa .NET com C# e Views em Razor
- Facilita a curva de aprendizado e de entrega para times que desejam entregar aplicações Web que rodam no client utilizando uma arquitetura baseada em REST.
- Server-side rendering nativo, ótimo para SEO.
- DNA! DOT NET Anywhere (.NET em todos os lugares).
Pontos negativos:
- É super novo e experimental, não sabemos se terá continuidade ou adoção.
- É baseado em .NET o que restringe desenvolvedores de outras plataformas em aderir (pelo menos rapidamente).
- Não possui componentes prontos assim como existem para Angular e React (problemas de adotar um framework novo)
- Não tem suporte da comunidade e 0 documentação.
- Não funciona 100% no Visual Studio ou no Code (falta tooling).
Notem que a maioria dos pontos negativos é devido ao Blazor ser extremamente novo, com o tempo e o sucesso na adoção (e bastante investimento da Microsoft) isto tende a mudar.
O único ponto imutável é que o Blazor é baseado em .NET. Enquanto um desenvolvedor Angular pode mudar para React ou Vue sem ter que aprender uma nova linguagem o mesmo não acontecerá com o Blazor, o que pode ser um limitador para desenvolvedores de outras plataformas.
De outro lado desenvolvedores WebForms, MVC, Xamarin e etc poderão se beneficiar imediatamente e começar a entregar aplicações SPA com uma performance e segurança superior.
Isto é sério mesmo?
Entregar o .NET Core por completo pela Web com cerca de 300 KB?
Até mesmo o novo Angular pesa um pouco mais que isso!
Para saber mais
Assista essa demo de TODO List com Blazor (é muito interessante)
O projeto é OpenSource (Microsoft <3)
https://github.com/aspnet/Blazor/
E para finalizar! O que acham do Blazor e WebAssembly?
Vamos continuar a troca de experiências, deixe seu comentário abaixo. Se gostou e concorda com o artigo, compartilhe com seus colegas para transmitirmos o conhecimento para o máximo de pessoas possíveis.