WebAssembly, the final frontier. These are the voyages of the web developer. Its continuing mission: to explore strange new worlds, to seek out new technologies and new platforms, to boldly go where no one has gone before.
Yes indeed! with Wasm, JavaScript is no longer the only practical runtime language of choice.
Enter Blazor WebAssembly! It enables you to write complete web apps over open web standards in.. well.. C#! You might be wondering how you can do that, how it should look like, and whether it is a sane choice (and rightfully so).
Join me in this session as we cover the emergence of WebAssembly into the app world while using Blazor and C#.
6. About Me
6
Amir Zuker
Mentor, leader, architect, developer, instructor, author and speaker
Over 20 years of experience in the field
Leads teams and R&D divisions
Several publications and contributions
Head of Web and Mobile at CodeValue
9. WebAssembly (Wasm)
9
"WebAssembly is a binary instruction format for
a stack-based virtual machine.
Wasm is designed as a portable target for
compilation of high-level languages like
C/C++/Rust, enabling deployment on the web
for client and server applications"
https://webassembly.org/
20. Already Used in The Wild..
21
Adobe Lightroom
Autodesk AutoCAD
Unreal Engine
Unity Engine
Quake
Gutenberg post
parser (Rust)
Barcode scanner
21. 22
WebAssembly (Wasm)
Neither Web nor Assembly, but Revolutionary!
Not here to replace JavaScript (yet?)
Key benefits
Can use a preferred language
Portable and interoperable
Compact and performant
23. 24
Blazor – In a Nutshell
A component driven framework
Build rich web apps using .NET, C# and Razor
Works on modern browsers
Interoperable
Supports SPA, PWA and Server
24. Blazor Hosting Models
25
- UI interaction and logic runs on server-side
- Leverages web sockets
- Static assets! Runs only in the browser.
- Leverages WebAssembly
36. JavaScript Interop
.NET JS / JS .NET
Use existing libraries or browser API's (mileage may vary)
Many existing 3rd party packages already fill the gap
Can do it yourself when needed via JavaScript runtime interop
Supports static and instance members
38
37. Progressive Web App (PWA)
Web app Native like
Smooth, immersive
Push notifications
Offline support
Installable
Includes a built-in PWA template
39
40. Blazor – What's Coming
Component API Enhancements
Type constraints, required parameters, IAsyncDisposable, SVG, etc.
CSS isolation
Hot reloading
AoT compilation
Multithreaded runtime
Lazy loading
42
41. No .NET products / skillset?
Supporting older browsers?
No additional compute perf? (perhaps)
App-first, bread and butter, limit risk?
Limited tolerance for gaps?
Specific tech? (DICOM, WebGL, GIS, etc.)
Probably not..
Cool Stuff! But Should I?
43
.NET products and skillset? Plus reuse?
Modern browsers?
Additional compute perf? (perhaps)
Tolerate risk?
Tolerate gaps?
No specific tech or ready for short POC's?
Why not?
Maybe?