Nejvýkonnější, nejvýkonnější a nejsnadněji použitelný rámec uživatelského rozhraní je HTML s CSS a JavaScriptem. DirectX má extrémně vysoké náklady na vývoj a UPW postrádá mnoho funkcí, které jsou v CSS standardní. Achillovou patou čistého webového vývoje je JavaScript. Když používáte jazyk vyšší úrovně zkompilovaný do JavaScriptu, vyvstává jedna otázka: je JavaScript efektivní mezijazyk? Odpověď je ne a výsledkem je webový bytecode s názvem WebAssembly.
JavaScript je neefektivní a pomalý. Nové funkce jazyka ECMAScript 6 byly tak složité, že optimalizace kompilátoru pro ECMAScript 5 nebyly použitelné. Složitý jazyk také potřebuje složitý kompilátor, který spotřebovává více výpočetního výkonu. Na počítačích to nevadí, ale na zařízeních napájených z baterie je to důležité. JavaScript je jednou z energeticky nejnáročnějších komponent webové stránky. Například stažení a interpretace JavaScriptu na stránce Wikipedie zabere asi 30 % celkové energie potřebné ke stažení a vykreslení celé stránky (zdroj: Kdo mi zabil baterii: Analýza spotřeby energie mobilního prohlížeče).
asm.js
Jeden pokus o vrácení optimalizací kompilátoru JavaScriptu byl asm.js. Jednalo se o výzkumný projekt Mozilly, jehož cílem bylo definovat optimalizovatelnou podmnožinu JavaScriptu na nízké úrovni. Dokázal zkompilovat kód C++ do JavaScriptu, který mohl běžet s výkonem téměř nativním. Prohlížeče detekovaly optimalizovaný kód JavaScript a používaly specifický kompilátor. Kód JavaScript byl zpětně kompatibilní s tradičními kompilátory, takže podpora od jiných dodavatelů prohlížečů nebyla nutná.
WebAssembly
WebAssembly je vylepšením asm.js. V podstatě upouští od zpětné kompatibility pro vyšší výkon. Prohlížeč spustí binární kód určený pro rychlou analýzu a spuštění. Jazyk není dynamický, takže odemyká mnoho rychlých instrukcí CPU. WebAssembly byl navržen společně všemi hlavními dodavateli prohlížečů, takže panuje široká shoda na tom, jak jej optimalizovat. Dne 5. prosince 2019 se z něj stalo doporučení W3C.
Blazor
Blazor je běhové prostředí .NET, které lze spustit jako WebAssembly. Na rozdíl od Silverlightu je založen na HTML5 a DOM namísto XAML s vlastním vykreslovacím jádrem. Jaké náležitosti tedy obsahuje?
Blazor Compiler
Kompilátor Blazor transformuje soubory .razor
na kód jazyka C#, který lze zkompilovat pomocí vanilla kompilátoru jazyka C#. Hlavní rozdíl mezi zpracováním souborů .cshtml
a .razor
spočívá v tom, že Blazor kompilátor vytvoří strom syntaxe, který odráží model DOM. Analyzuje kód HTML, a proto vyžaduje dobře naformátované HTML.
Mono.net Runtime
Jedním z běhových prostředí .NET je Mono, které bylo portováno na WebAssembly. Interpretuje sestavení .NET. V budoucnu může být podporována kompilace předem, protože ji používá Xamarin.iOS a UPW. Kompilátor vanilla jazyka C# ji bude podporovat s rozhraním .NET 5.
Blazor má potenciál nahradit model Windows Forms, WPF, UPW a Xamarin Forms. Mohl by to být hlavní rámec uživatelského rozhraní pro všechny aplikace .NET. No, téměř – konzolové aplikace jsou nesmrtelné. První vydání Blazoru je naplánováno na květen 2020.