locked
Blazor WebAssembly for Consumer facing application? Is it ready? RRS feed

  • Question

  • User-1553511783 posted

    Hi all,

    I've been a full stack developer for over 15 years. I started working on ASP.NET , MVC, then moved to AngularJS + Rest Services, and didn't move to REACT or Angular.   

    I came across Blazor WebAssembly and I loved it from the first time, and I implemented several enterprise applications during the last couple of months. Complex applications but for a small amount of internal users.

    I now have the need to create a new application, this time it's public and for customers all around the world, with lots of data, searches, payment gateways, and so on.  And having struggled with Blazor at some point, I have to ask you : Would you go with this technology as it is?  Or would it make more sense to use REACT (Angular, Vue, or any other)) with Rest services? 

    My main concern is if in terms of stability and performance , is this technology in your opinion ready to be used in something like that?  

    Thank you in advance for your opinions.

    Victor

    Tuesday, December 22, 2020 2:24 AM

All replies

  • User-474980206 posted

    the main performance issue with Blazor is load time at startup as you probably already know. I'd say its mature enough to do a public facing WASM applications. Its main disadvantage compared to say React, is the amount of public support (example code) and this party library support. if its world wide, you should have an idea of the browsers (probably mobile phones) that you need to support. what percent will require WASM emulation? 

    You will need to evaluate how hard it is to create the application you want in Blazor. Blazor strength is form based applications common for enterprise. How far from this does your app stray? Fancy UI effects as you know will generally require javascript interop. But sharing logic and passing data to the server is easier.

    Tuesday, December 22, 2020 4:11 PM
  • User-1553511783 posted

    Hi Bruce, 
    Yes, I agree about the initial loading times, but with a nice preloader and given it's just once I think it's bearable. One thing I also found is that all components, such as Telerik, Radzen, Syncfusion are slower and less responsive than their corresponding js/angular/react version. That's the reason why I mentioned the performance, if there's anything to WASM that's creating that "slowness" sensation.

    I found myself building several components already available in REACT and most importantly , mature components, but like you say , interacting with JS is fairly simple.  I even adapted Metronic and some other admin templates and I enjoyed working with Blazor all along.

    The application I need to build is like an Expedia or Booking (not as huge of course, but same idea) , and customers would be using both pcs and mobile forms.  I know Iphones are OK, I don't know exactly if all android/chrome versions are able to run WASM applications. 

    Tuesday, December 22, 2020 6:40 PM
  • User-474980206 posted

    as you know a WASM application can not access the dom directly or receive dom events. Blazor like react uses a virtual dom maintained by the Blazor javascript library. the Blazor code sends render fragments to the javascript library. 

    Blazor WASM programs are run by a small WASM .net vm (based on the mono vm because it can compile to WASM). So currently Blazor programs may be slower than javascript. Even a little worse if WASM is not supported, and the javascript WASM emulator is used.   as WASM is based on asm.js instruction set, the javascript emulator is faster than you'd think.

    as for third party library support beyond Telerik, etc. see this article. I mostly agree (though time will tell)

      https://medium.com/young-coder/net-has-a-third-party-software-problem-45d24cdc30c9

    note: my interest in Blazor is purely technical. I use react for all my applications.

    Wednesday, December 23, 2020 9:18 PM