Blazor: minhas primeiras impressões

Graças a um esforço conjunto de diversas empresas, comunidades técnicas e mercado a Web tem evoluído rápida e constantemente com novidades a todo o momento, visando o atendimento aos requisitos cada mais exigentes de performance, escalabilidade, economia de recursos, objetivando uma Web mais rápida, mais acessível e viável para todos os tipos de negócios e aplicabilidades.

Foi neste contexto que desde sempre surgiram frameworks e bibliotecas baseados em Javascript com uma enorme diversidade, destacando-se o Angular, VueJS e React na proposta de facilitar o mundo de desenvolvimento de aplicações Web, com escalabilidade e alta performance. Tais frameworks e bibliotecas têm em seu núcleo a obediência às boas práticas e abuso (no bom sentido), de quase todos os recursos presentes nos navegadores que dessem maior rapidez às aplicações.

Mas, ao passo que as tecnologias Web foram evoluindo, as necessidades de mercado evoluíram junto, estando as necessidades sempre um passo à frente do que já existe no mercado, obrigando a sempre “corrermos atrás do prejuízo”.

Então, por mais que “abusemos” da utilização de Javascript e recursos presentes no “client”, delegando o mínimo possível de processamento ao servidor, era inevitável que as exigências de performance aumentassem, pois as aplicações Web estão também cada vez mais complexas e robustas. Modalidades de aplicações que antes eram desenvolvidas tradicionalmente apenas para a plataforma desktop (como ERP’s de grandes empresas), estão agora sendo desenvolvidas para a Web. Incluem-se aí sistemas de Folha de Pagamento, Financeiro, Fiscal, CRM’s, dentre outras finalidades. Tornar a informação acessível dentro das empresas e de qualquer dispositivo se tornou um pré-requisito fundamental das aplicações.

Sendo assim, considerando a necessidade de altíssima performance em aplicações Web, surgiu o Web Assembly!

Web Assembly

Este artigo não tem a proposta de abordar com detalhes o que é Web Assembly, mas acho que vale a pena abordar coisas básicas apenas para contextualizar.

Também chamado na comunidade de Wasm, resumidamente, ela representa uma linguagem de “baixo nível” para Web, que pode ser executada diretamente nas versões mais recentes dos navegadores modernos.

Fazendo um paralelo com linguagens de programação convencional, ela seria o que a assembly representa para linguagens de alto nível como C#/Java, por exemplo. Quando desenvolvemos em C#, não precisamos (na maior parte das vezes) nos preocupar com o código assembly (código binário) que nossa instrução gerará, pois a linguagem encapsula esta complexidade para o desenvolvedor. Eu conheço pouquíssimas pessoas que entendem “linguagem de máquina”(eu não sou uma delas) e a utiliza no seu dia-a-dia. O seu estudo é mais recomendável para quem precisa desenvolver aplicações com ALTÍSSIMA performance.

O Web Assembly trabalha com formato binário. Isto significa que você pode desenvolver uma rotina em C, C++ (etc) e compilar para arquivos .wasm que serão sim entendidos pelo navegador. Pelo pouquíssimo que sei sobre o assunto (ainda estou estudando), o objetivo do Web Assembly nunca foi que programássemos diretamente em Web Assembly, mas sim nos utilizarmos de ferramentas que fizessem a compilação para nós a partir da linguagem de programação que estamos acostumados.

Com Web Assembly eu pararei de usar Javascript? A resposta é: NÃO! O Web Assembly não possui o objetivo de substituir o Javascript, mas sem utilizado junto com ele, pois é através de Javascript que conseguimos acessar o DOM, por exemplo (ou virtual DOM) e necessitamos dele também para acessar e fazer funcionar os módulos wasm no navegador (por enquanto).

Mas, e onde entra o Blazor nesta história?

Blazor

Blazor é um SPA (Single Page Application) desenvolvido pela Microsoft e disponibilizado em versão de teste recentemente no link abaixo:

Você desenvolve suas aplicações Web utilizando Razor e C# normalmente, semelhante ao que fazíamos no Asp.Net MVC tradicional, mas com a ENORME diferença é que ele se encarregará de gerar “automagicamente” compilar e gerar código .wasm correspodente.

Pra mim, particularmente, esta é uma notícia sensacional, porque quem está acostumado a desenvolver na plataforma .NET se adaptará muito facilmente ao Web Assembly sem necessidade e grande esforço de aprendizado. Isto tem um lado negativo? Como tudo na vida, tem sim: quando utilizamos qualquer plataforma que encapsula a complexidade de determinadas coisas, acabamos por nos acomodar e não aprendemos conceitos básicos a respeito de algumas tecnologias, como o Web Assembly.

Então, vale a pena continuarmos estudando pra entender como as coisas realmente funcionam e não ficarmos tão dependentes de alguma plataforma específica.

Este é um assunto novo pra mim. Estou realizando testes ainda com o “preview” do Blazor. Á medida que for estudando e me aprofundando neste tema, vou publicando mais artigos periodicamente sobre o assunto.

Ao que parece o projeto está em sua fase inicial e ainda serão lançadas muitas versões e melhorias.

Se o Blazor vingará, não podemos dizer ainda. Mas, uma coisa é fato: o Web Assembly veio pra ficar.

Como estamos sempre em fase de constante aprendizado, caso tenha alguma sugestão de aprimoramento no artigo ou correção, fique à vontade. O objetivo é sempre aprendermos uns com os outros.

Referências

Linkedin: https://www.linkedin.com/in/alexandremalavasi