WebAssembly e Blazor: O futuro da web

WebAssembly e Blazor: O futuro da web

Oi, eu sou o Liu e hoje vim trazer dois assuntos que vão mexer com as web apps da próxima geração: WebAssembly Blazor.

Pra começar a entender devemos saber o que é esse tal de WebAssembly e por que ele é importante. O WebAssembly é a próxima era do desenvolvimento web. Basicamente ele é o responsável por compilar os códigos de uma linguagem específica para bytecode, o que torna seu desempenho superior a tudo que já vimos até hoje no que se trata de Web.

O que torna o WebAssembly tão fantástico é o poder de até mesmo interoperar com bibliotecas e código javascript, ou seja tudo que o JS já faz, os códigos compilados pelo WebAssembly são capazes de fazer.

O mais legal é que a maioria dos browsers modernos já dão suporte ao WebAssembly, e os antigos podem ser facilmente atingidos pelos “esquemas de polyfill” cujo o Blazor implementa.

Já que citei o Blazor, este por sua vez é um framework SPA que roda de forma nativa no browser através do WebAssembly. Sua grande vantagem é ter código .Net rodando no browser de forma performática.

Além disso, quando criamos um projeto com Blazor, por padrão temos todas as principais capacidades  que uma aplicação Web necessita, ou seja, temos capacidade de criar layouts, rotas, dependency injection, lazy loading, unit test, gerenciamento de estado e tudo mais.

Através do Blazor podemos criar ou consumir funções javascript, conforme o exemplo abaixo:

 

Após isso fazemos uma camada em C#:

 

A grande sacada de tudo isso é que nos próximos anos o WebAssembly ainda deve nos fornecer um leque de possibilidades muito grande.

Teremos liberdade pra tirar proveito do melhor de cada linguagem, se precisarmos de cálculos funcionais com F#, criar módulos de baixo nível com C ou até mesmo aproveitar algum conhecimento específico de uma linguagem tal como o Java, tudo isso está vindo pra Web a passos rápidos.

Modalidades WebAssembly

Como vimos o WebAssembly é suportado nos principais navegadores. Pra rodar código .NET no browser, o suporte foi feito pela equipe do Mono, desta forma ele funciona de duas maneiras: modo interpretado e o AOT.

Modo interpretado

No modo interpretado , o próprio tempo de execução (runtime) Mono é compilado para o WebAssembly, mas os assemblies .NET (arquivos ‘.dll’) não são. O navegador pode então carregar e executar o tempo de execução do Mono, que por sua vez pode carregar e executar assemblies .NET, construídos pela cadeia de ferramentas de compilação padrão do .NET.

Isso é semelhante ao CLR para a área de trabalho, onde os componentes internos do núcleo do CLR são distribuídos pré-compilados para o código nativo, que então carrega e executa arquivos de montagem do .NET. Uma diferença fundamental é que o CLR da área de trabalho usa compilação just-in-time (JIT) extensivamente para tornar a execução mais rápida, enquanto o Mono no WebAssembly está mais próximo de um modelo de interpretação pura.

Ahead-of-time (AOT) modo compilado

No modo AOT, as montagens .NET do seu aplicativo são transformadas em binários de WebAssembly puro em tempo de compilação. No tempo de execução, não há interpretação: seu código apenas é executado diretamente como código normal da WebAssembly. Ainda é necessário carregar parte do tempo de execução Mono (por exemplo, para serviços .NET de baixo nível, como o garbage collector), mas não por completo (por exemplo, peças para a análise de assemblies do .NET).

Mais informações em:

https://www.windowsteam.com.br/blazor-novo-framework-spa-da-microsoft-para-desenvolvimento-de-aplicativos-web-baseados-no-navegador-com-net/

Leave a Reply

Your email address will not be published. Required fields are marked *