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

WASM, WASI, WTF? WebAssembly 101 – for .NET developers

WASM, WASI, WTF? WebAssembly 101 – for .NET developers

Buzzword bingo, FTW! No, this session is not about Blazor WebAssembly. Rather, Christian will discuss WebAssembly as a base technology and ubiquitous platform that enables many ever-dreamed-of scenarios in computing. These include - in conjunction with WASI - secure isolated execution environments, powerful instantiation & execution engines, and lightweight server-side & serverless runtime environments. And all this with almost every programming language and framework, including C# and .NET. Come by and get an idea of why, what and how WebAssembly, WASI & Co. will make a difference in a world beyond the browser. As a .NET developer, you should definitely know about one of the hottest technologies in town. (Oh, and yes: we will also briefly talk about Blazor WebAssembly...)

Christian Weyer

April 13, 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 for .NET developers Christian Weyer Co-Founder & CTO @ Thinktecture AG 2
  2. § Intro § Web § Compute § .NET § Wrap-up

    WASM, WASI, WTF? WebAssembly 101 for .NET developers Agenda 3
  3. WebAssembly (Wasm) is a § secure § fast § portable

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

    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 for .NET developers Web as a platform for ubiquitous client applications 8
  6. § Fast, efficient, and portable § Low-level bytecode for the

    web § Uses existing browser sandbox features § Use native code to run inside the browser, in a secure environment § Interoperability via JavaScript for accessing browser APIs § No plugins needed § Standards and specifications through W3C WASM, WASI, WTF? WebAssembly 101 for .NET developers WebAssembly in the browser 9 https://caniuse.com/?search=WebAssembly
  7. § Migrate native code (like desktop applications) to the web

    § Augment or speed up web applications WASM, WASI, WTF? WebAssembly 101 for .NET developers Scenarios for WebAssembly in the browser 10
  8. WASM, WASI, WTF? WebAssembly 101 for .NET developers Migrating native

    code to the browser (large C++ codebase) 11
  9. § Video games § Music streaming § Video editing §

    3D rendering § Encryption § Image recognition / processing § Running simulations WASM, WASI, WTF? WebAssembly 101 for .NET developers Calculation-intensive use cases 12
  10. Angular SPA with image processing powered by Wasm WASM, WASI,

    WTF? WebAssembly 101 for .NET developers DEMO 13
  11. § Size § Compared to other distributables (containers | VMs),

    Wasm is super small § Speed § Wasm modules are bootstrapped in “no time” and 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 for .NET developers WebAssembly outside the browser – ubiquitous compute 15
  12. § 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 for .NET developers WASI 16 https://twitter.com/solomonstre/status/1111004913222324225
  13. § 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 for .NET developers WASI runtimes 17
  14. § No infrastructure management § Speed of Wasm allows scale-down

    to 0 § No impact on request performance § Notable Serverless Wasm platforms today § Fermyon § Fermyon Cloud & Spin § Microsoft is experimenting in Azure § (currently in AKS - not really serverless, yet) WASM, WASI, WTF? WebAssembly 101 for .NET developers Serverless WebAssembly with WASI 18
  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 for .NET developers .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 running in the browser, e.g. JS SPAs § Blazor WebAssembly § Build C#- / .NET-based SPAs with Razor components WASM, WASI, WTF? WebAssembly 101 for .NET developers .NET & WebAssembly - browser 22
  17. Blazor WebAssembly File – New – Project… WASM, WASI, WTF?

    WebAssembly 101 for .NET developers 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 § .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 for .NET developers .NET & WebAssembly – beyond the browser 24
  19. .NET WASI SDK § Hello Console app § ASP.NET Core

    app WASM, WASI, WTF? WebAssembly 101 for .NET developers 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 WebAssembly & WASI – make yourself familiar today WASM, WASI, WTF? WebAssembly 101 for .NET developers Wasm & WASI will be big for ubiquitous computing 🙌 27 Server Future Web Cloud Microcontroller Extensibility Bare metal Edge
  21. § Angular SPA with Rust image processing § https://github.com/martinakraus/ng-rust-demo §

    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 for .NET developers Links 29