Mais um Framework SPA e desta vez é da Microsoft! Conheça o Blazor

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

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.