Slide 1

Slide 1 text

Keynote Blazor - Neues für WebAssembly in .NET 6.0 Christian Weyer https://thinktecture.com/christian-weyer @christianweyer Co-Founder & CTO

Slide 2

Slide 2 text

2 § “Suuuper: ich kann endlich mit C# und .NET Web-Apps & SPAs bauen!” § Blazor Server § “Terminal Server für Entwickler” § Keine wirkliche Web-App-Architektur § Blazor WebAssembly § “Schräges SPA-Konzept, mit einer Runtime auf einer Runtime” § C# & .NET noch nicht wirklich fit für den Browser § Aber: C# & .NET im Browser ist sooo cool J Blazor in .NET 6.0 Blazor – eine Art Hass-Liebe

Slide 3

Slide 3 text

3 § WebAssembly Deployment Layout (WASM) § Native Dependencies (WASM) § Ahead-of-Time (AOT) Kompilierung (WASM) Blazor in .NET 6.0 3 wichtige Features in Blazor in .NET 6.0 Alle Neuigkeiten: https://docs.microsoft.com/en-us/aspnet/core/release-notes/aspnetcore-6.0?view=aspnetcore-6.0#blazor

Slide 4

Slide 4 text

4 § Manche Firewalls und Proxies haben „Probleme“ mit binären Dateien (.dlls bei Blazor WASM) § Umbenennen der Dateien hilft nicht wirklich § Komplette Anpassbarkeit des Lade- und Bootvorgangs § JavaScript Initializers für das Customizen des Bootens von Blazor WASM § MSBuild-Erweiterbarkeit für Blazor Publish Extensions § Exemplarische Publish Extension für Paketierung mit MIME-Multipart- Bundles § Microsoft.AspNetCore.Components.WebAssembly.MultipartBundle § Clevere Firewalls und Viren Scanner checken aber auch das J Blazor in .NET 6.0 WebAssembly Deployment Layouts

Slide 5

Slide 5 text

5 • Native Abhängigkeiten müssen für die Einbindung in Blazor WASM kompiliert werden • Emscripten Compiler • C, C++, Rust und alle Sprachen, die nach Wasm kompilieren • P/Invoke-Aufrufe in den nativen Code • Ermöglicht bspw. vollständige Nutzung von SQLite mit EF Core in Browser-Apps (in Zukunft) • Tools Chain: dotnet workload install wasm-tools • Projektdatei: auf nativen Code hinzufügen Blazor in .NET 6.0 Native Dependencies

Slide 6

Slide 6 text

Blazor-WASM-Anwendung ohne AoT-Kompilierung Blazor in .NET 6.0 Ahead-of-Time (AoT)-Kompilierung Download Blazor-Runtime wird gestartet IL-Code wird interpretiert und ausgeführt Blazor-App-Code in IL (*.dll) Andere .NET-Bibliotheken in IL (*.dll) Blazor-Runtime in Wasm (blazor.webassembly.js, dotnet.wasm) Download 1a 1b 2 3 Web-App im Browser Server Client 6

Slide 7

Slide 7 text

Blazor-WASM-Anwendung mit AoT-Kompilierung Blazor in .NET 6.0 Ahead-of-Time (AoT)-Kompilierung Download WASM-Code wird nativ ausgeführt (plus notwendige .dlls für Reflection u.ä.) Notwendige .dlls werden weiterhin heruntergeladen Blazor-App-Code in Wasm kompiliert Kombiniert mit Blazor-Runtime (blazor.webassembly.js , dotnet.wasm) Download 1a 1b 2 Web-App im Browser Server Client 7

Slide 8

Slide 8 text

8 Blazor in .NET 6.0 Ahead-of-Time (AoT) Kompilierung Effekte • .NET-Code wird direkt in optimierten Wasm-Code kompiliert • Leistungssteigerung bei CPU-intensiven Aufgaben, bspw. • Algorithmen (bspw. Bildbearbeitung) • Serialisierung/Deserialisierung • Kryptografie (bspw. Erzeugung SHA-256-Hashes) Wichtig zu wissen • Weiterhin werden .NET- Assemblys (*.dll) heruntergeladen • AOT-Release-Build-Dauer signifikant umfangreicher • Größe des Anwendungs- Deliverables wächst

Slide 9

Slide 9 text

9 § Exemplarische maximale Performancesteigerungen (im Vergleich zu non-AOT Blazor WASM) – alles Zirkaangaben § 5x schneller bei typischen Business-Logik-Routinen § 6x schneller bei Deserialisierung von JSON mit HttpClient § 10x schneller bei Deserialisierung mit gRPC statt HttpClient & JSON § 16x schneller bei Kryptografie-Algorithmen Blazor in .NET 6.0 Ahead-of-Time (AOT) Kompilierung Quellen: https://www.youtube.com/watch?v=X6FnfzUfrew https://twitter.com/jamesnk/status/1399496670958604292?lang=en

Slide 10

Slide 10 text

10 Blazor in .NET 6.0 Ausblick: Blazor in .NET 7.0 Roadmap: https://github.com/dotnet/aspnetcore/issues/39504

Slide 11

Slide 11 text

Danke! Bei Fragen kontaktieren Sie mich gerne Christian Weyer https://thinktecture.com/christian-weyer @christianweyer [email protected] Blazor Knowledge Hub: https://www.thinktecture.com/de/asp-dotnet-core-blazor/ 11