Upgrade to Pro — share decks privately, control downloads, hide ads and more …

WASM, WASI, WTF? WebAssembly 101 für .NET-Entwickler

WASM, WASI, WTF? WebAssembly 101 für .NET-Entwickler

Buzzword-Bingo, FTW! Nein, in dieser Session geht es NICHT um Blazor WebAssembly. Vielmehr wird Christian WebAssembly als Basistechnologie und allgegenwärtige Plattform diskutieren, die viele immer erträumte Szenarien im Computing-Umfeld ermöglicht. Dazu gehören sichere isolierte Ausführungsumgebungen, leistungsstarke Instanziierungs- und Ausführungs-Engines sowie leichtgewichtige serverseitige und Serverless-Laufzeitumgebungen. Und das alles mit fast jeder Programmiersprache und jedem Framework, einschließlich C# und .NET.
Kommt vorbei und macht euch ein Bild davon, warum, was und wie WebAssembly in einer Welt jenseits des Browsers einen Unterschied machen wird. Als .NET-Entwickler sollte man auf jeden Fall über eine der aktuell heißesten Technologien Bescheid wissen.
Oh, und ja - wir werden auch ganz kurz über Blazor WebAssembly sprechen...

Christian Weyer

June 27, 2023

More Decks by Christian Weyer

Other Decks in Programming


  1. § Cloud-native & serverless architectures § Pragmatic end-to-end solutions §

    Mobile & web-based application architectures § Microsoft Regional Director § Microsoft MVP for Developer Technologies & Azure ASPInsider, AzureInsider § Google GDE for Web Technologies [email protected] @christianweyer https://www.thinktecture.com WASM, WASI, WTF? WebAssembly 101 für .NET-Entwickler Christian Weyer Co-Founder & CTO @ Thinktecture AG 2
  2. § Intro § Web § Compute § .NET § Wrap-up

    WASM, WASI, WTF? WebAssembly 101 für .NET-Entwickler Agenda 3
  3. WebAssembly (Wasm) is a § secure § fast § portable

    stack-based execution environment (aka virtual machine), for running applications by executing low-level sandboxed bytecode. WASM, WASI, WTF? WebAssembly 101 für .NET-Entwickler What is WebAssembly? 5
  4. Server Server WASM, WASI, WTF? WebAssembly 101 für .NET-Entwickler Why

    WebAssembly? Everything, everywhere – securely 6 Origins Current developments Future Web Web Web Cloud Cloud Microcontroller Extensibility Extensibility Bare metal Edge
  5. § The browser evolved to a smart client application platform

    § Browser APIs (file system access, clipboard, sharing data etc.) § Runs on (almost) every platform § Handling updates is easy (and cheap) § Download new version from the server WASM, WASI, WTF? WebAssembly 101 für .NET-Entwickler Web as a platform for ubiquitous client applications 8
  6. § Native code - fast, efficient, and portable § Low-level

    bytecode for the web § No plugins needed § Standards and specifications through W3C § Uses existing browser sandbox features § Use native code to run inside the browser, in a secure environment § Interoperability via JavaScript for accessing browser APIs WASM, WASI, WTF? WebAssembly 101 für .NET-Entwickler WebAssembly in the browser 9
  7. 1. Migrate native code (like desktop applications) to the web

    2. Augment or speed up web applications WASM, WASI, WTF? WebAssembly 101 für .NET-Entwickler Major scenarios for WebAssembly in the browser 10
  8. § Video games § Music streaming § Video editing §

    3D rendering § Encryption § Image recognition / processing § Running simulations WASM, WASI, WTF? WebAssembly 101 für .NET-Entwickler Calculation-intensive use cases 12
  9. Offline Web-based AI with LLMs, WebGPU & Wasm WASM, WASI,

    WTF? WebAssembly 101 für .NET-Entwickler DEMO 13
  10. § Size § Compared to other distributables (containers | VMs),

    Wasm is super small § Speed § Wasm modules are bootstrapped in “no time” and are fast at runtime § Resource utilization § With same compute power, more applications can be executed § Security § Wasm modules are isolated and every module can have dedicated permissions WASM, WASI, WTF? WebAssembly 101 für .NET-Entwickler WebAssembly outside the browser – ubiquitous compute 15
  11. § Enabling Wasm in a Cloud-native world § WASI (WebAssembly

    System Interface) provides standardized system calls to sandboxed Wasm code § WASI offers capability-based isolation § WASI is platform-agnostic: run Wasm applications on any WASI-compliant platform (device, OS, CPU arch) § WASI offers containerization on the next level WASM, WASI, WTF? WebAssembly 101 für .NET-Entwickler WASI 16 https://twitter.com/solomonstre/status/1111004913222324225
  12. § Host infrastructure for executing Wasm applications leveraging APIs specified

    and provided by WASI § Handle system calls made by Wasm modules and delegate them to the underlying platform, e.g.: § File access § Network access § Environment variables § WASI runtime examples § wasmtime § wasmer § WebAssembly Micro Runtime (WAMR) WASM, WASI, WTF? WebAssembly 101 für .NET-Entwickler WASI runtimes 17
  13. § No infrastructure management § Speed of Wasm allows scale-down

    to 0 § No impact on request performance § Notable Serverless Wasm platforms today § Fermyon § Spin & Fermyon Cloud § Microsoft is experimenting in Azure § Currently in AKS - not really serverless, yet WASM, WASI, WTF? WebAssembly 101 für .NET-Entwickler Serverless WebAssembly with WASI 18
  14. Serverless HTTP API with Spin & WASI WASM, WASI, WTF?

    WebAssembly 101 für .NET-Entwickler DEMO 19
  15. § .NET went live in 2002 § Desktop and single

    servers were dominating § .NET wants and needs to be ready for modern distributed Cloud-native software solutions § Original .NET Core was one step into that direction § .NET has different runtime form factors § Including WebAssembly – for ubiquitous execution WASM, WASI, WTF? WebAssembly 101 für .NET-Entwickler .NET in 2023 21
  16. § .NET’s current Wasm support builds on Mono § Relies

    on emscripten § Creates .NET assemblies & interprets them on .NET runtime compiled to Wasm § AOT mode enables ahead-of-time compilation § .NET-compiled Wasm & JS interop § Take your C# / .NET code into the browser § Integrate it with any JS code in the browser, e.g. JS SPA frameworks § Blazor WebAssembly § Build C#- / .NET-based SPAs with Razor components WASM, WASI, WTF? WebAssembly 101 für .NET-Entwickler .NET & WebAssembly - browser 22
  17. Blazor WebAssembly - File – New – Project… WASM, WASI,

    WTF? WebAssembly 101 für .NET-Entwickler DEMO 23
  18. § .NET team recognizes the need for first-class citizen support

    for Wasm & WASI § .NET WASI SDK § Relies on LLVM § Produces one single .wasm file § Experimental – being evolved & stabilized towards .NET 8 release as a workload § .NET NativeAOT-LLVM § NativeAOT can make .NET binaries smaller & faster § Future Wasm support could be based on NativeAOT, in addition to Mono - very experimental today WASM, WASI, WTF? WebAssembly 101 für .NET-Entwickler .NET & WebAssembly – beyond the browser 24
  19. .NET WASI SDK § Hello Console app § ASP.NET Core

    app § Spin with .NET WASM, WASI, WTF? WebAssembly 101 für .NET-Entwickler DEMO 25
  20. § Secure, fast, portable “write once, run anywhere” § A

    compiler target, in the end § Also for .NET developers § A lot of things are still moving, though § Specifications & standards § Technologies § Developer tooling § .NET embraces Wasm & WASI – make yourself familiar today & think about possibilities WASM, WASI, WTF? WebAssembly 101 für .NET-Entwickler Wasm & WASI will be big for ubiquitous computing 🙌 27 Server Future Web Cloud Microcontroller Extensibility Bare metal Edge
  21. § CanIUse.com § https://caniuse.com/?search=WebAssembly § Web-LLM § https://mlc.ai/web-llm/ § WASI

    § https://wasi.dev/ § Fermyon Spin § https://www.fermyon.com/spin § .NET Form Factors § https://github.com/dotnet/designs/blob/main/accepted/2020/form-factors.md#webassembly § .NET WASI SDK § https://github.com/dotnet/dotnet-wasi-sdk § Wasmtime .NET § https://github.com/bytecodealliance/wasmtime-dotnet § Extism § https://github.com/extism/extism § Specifications, Standards § https://github.com/WebAssembly/proposals § https://webassembly.org/roadmap/ § https://github.com/WebAssembly/WASI/blob/main/Proposals.md WASM, WASI, WTF? WebAssembly 101 für .NET-Entwickler Links 29