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

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

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...

Avatar for Christian Weyer

Christian Weyer PRO

June 27, 2023
Tweet

More Decks by Christian Weyer

Other Decks in Programming

Transcript

  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