@danroth27 I really appreciate the explanation and the position you're in with trying to get .NET 5 ready along with everything else. Some comments/questions: #24524
Unanswered
ansarizafar
asked this question in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
@danroth27 I really appreciate the explanation and the position you're in with trying to get .NET 5 ready along with everything else. Some comments/questions:
I assume you're referring to switching to CoreFX from the Mono mscorlib? I think that's an excellent move if so given the many published performance benchmarks showing CoreFX outperforming Mono (and NetFX for that matter) significantly.
Yeah linking has been a major hurdle for awhile now as has been discussed here. Still, Uno has managed to make a toolchain and strike a balance between interpreted and compiled that can get app sizes in the ~10MB or low teens range. I would have thought we'd at least have a PoC for this on the Blazor side, just to start gauging performance metrics. It's not having any idea what degree performance will improve that is most concerning right now.
The DOM building piece of this needs to be carefully looked at too. Loading an empty Blazor app takes 1-2 seconds on my desktop and a couple more on mobile. Having lived in the Angular world I'm used to seeing "Loading..." every time and find the base startup time to be fine. The bigger problem is the excruciatingly slow speeds building complex DOMs. Even DOMs with 1000-2000 elements add as much as 5-10 seconds for the initial load, and interactivity involving complex items also adds significant lag. I don't see this being talked about much and I worry that (1) AOT is not going to solve this because it's endemic to WASM/JS interop and the way strings are exchanged between the two; and (2) the rendering/diffing mechanism in Blazor is so baked in now that it's too late to change it into something that would be high performance.
Exactly like Uno is already doing,...
So here's my reaction and analysis to all this, and I want you and everyone else to understand that I'm coming at this as someone who's probably as big of a .NET and Microsoft fan as there ever has been. Blazor was introduced to the world as a framework for using webassembly to bring .NET back to the browser. I was ecstatic when I learned about it. But it's been over two years now since it was first introduced for preview and the webassembly piece is still not ready for consumer applications because of the severe performance issues. Meanwhile lots was invested in server-side (whose place I'm still not entirely sure of) and now maybe mobile through Xamarin, but the WASM can keeps getting kicked down the road again and again.
.NET has lost so much ground as a frontend web platform since SPAs took over and Silverlight died thanks to Chrome banning plugins. Blazor could have changed all that. But I can't tell right now if Blazor WASM is really intended by Microsoft as the strategic game changer it could be or just a curiosity for fanboys like myself. But fanboy or not, as a business owner if I'm picking a frontend framework today for a new project or a rebuild of an old one, how do I justify to my backers that Blazor is the way to go, over React or Angular? When I list the pro's and con's, what am I left with as a pro other than I like C#? The cons, on the other hand, keep mounting.
So I'm very disappointed and a little demoralized. It's not just having to wait longer, it's that there are still many doubts about whether this tech is ever going to be viable, and I for one had been waiting to see AoT so I could make that determination.
I'm not expecting you guys to change your roadmap or really be in a position to alleviate any of these concerns today, but I thought they were worth airing. I desperately want this to succeed and would love nothing more than for .NET to reclaim its place as the king of interactive web apps. But if I had to put money on it today, it's not looking like a good bet. Please prove me wrong!
Originally posted by @legistek in #5466 (comment)
Beta Was this translation helpful? Give feedback.
All reactions