Asp.net Core updates in .NET 8 Preview 1
devblogs.microsoft.com
devblogs.microsoft.com
I developed stuff in java for android, swift for ios, and now mostly work in c#, SQL, .Net MVC/Core, blazor. Microsoft stack feels pretty good to me. Getting a start up job is a bit difficult, I came across two startups using microsoft stack and only one paid SV money.
C#/.Net does have a pretty stable job market but pay is a bit lower.
If there are issues I will just convert to webassembly.
Is your project an internal app or public?
I'm cautiously optimistic about Blazor Server but I'm not sure I like the sticky SignalR requirement. The expectation seems to be that the backend server will keep around a lot of state (cough viewstate?) in memory associated to that session. It's a very convenient dev experience for sure, but it seems difficult to scale beyond internal business apps.
Not quite sure how it works beyond that when you need multiple service instances connected with a backplane. The new premium tier I just saw sounds convenient though.
https://azure.microsoft.com/en-us/pricing/details/signalr-se...
In pragmatic terms, .NET is as native as anything else in Linux at this point.
You can even build it from source: https://github.com/dotnet/dotnet
In fact, the VMR ( linked above ) ONLY works on Linux at the moment with Windows and Mac support planned. So, .NET is Linux-first in some ways.
MAUI is not Linux first of course. The rest of it is becoming more and more Linux and container focussed though it seems.
Standard Blazor Webassembly project setup creates a server side project and a client side one. C# code on the client side is compiled to Webassembly. You then set up your server side functions called from the client side with usual C# .NET REST functions. This is less convenient than the Blazor Server model, but it captures the actual complexity of internet networking. It's also fast. You can put a lot of (hopefully non-confidential) processing onto the client side, running locally in the user's browser using a huge array of .NET library functions including from NuGet. It really is the way to go.
Which can be avoided with Blazor WASM that has different trade-offs with poor start times & SEO. Hopefully something that can be resolved with their upcoming Blazor United solution, which I'm assuming means no longer being able to host Blazor WASM's static assets from a CDN.
It also allows to add real-time functionality in a breeze. Even business applications can profit from that, but you often just skip that because it is not worth the effort.
It had a bit of a rough start but it seems far more interoperable on weird edge cases than Newtonsoft now, so all the "Newtonsoft-y" things you're doing might evaporate.
Pretty cool!
Welcome to the dungeon... Our jailer is polymorphic deserialization. We've got many gigabytes of Newtonsoft JSON in prod with that $type property throughout.
Any place I can use System.Text.Json I will, but there are a few legacy usages that absolutely won't work.
At this point, I'd like to rescind any expectation/desire for Microsoft to support polymorphic deserialization in their JSON library... It was a super powerful trick to get us to the next step, but it eventually turned into a nightmare for codebase maintenance.
Until we have this monster refactored, we won't be able to move most of our types into different namespaces or assemblies.
I do wonder about the scalability of the Blazor Server mode which requires live and "sticky" SignalR connections.
* Unclear state management story in Blazor WASM. There is a flux lib for Blazor but.. Ugh, I'm spoiled by MobX. Another project, Cortex.Net, inspired by MobX and uses Fody to make seamless fine-grain change subscriptions looked promising but the project did not gain traction :(
* Unclear runtime extensibility: How can I "plug-in" Blazor components that were not present at build time? That's a ASP.NET challenge in general TBH.
I REALLY want to want to use it though. That sweet, sweet isomorphism.
- Runtime extensibility: you can do whatever you want in C# so you do you. In addition there is also DynamicComponent now, which is what I believe you are looking for.
https://news.ycombinator.com/item?id=34793453
This stuff is super exciting to me. I've been using the SIMD-accelerated numerics for a side-project.
.NET8 is also an LTS version, so we are going to be upgrading to this for our B2B product sometime this year or early next. We had to skip over 7 due to our constraints, so we will be going from 6=>8.