Min julafton inträffar i November

Squeeds Julkalender | 2023-12-14 | Jakob Lithner
När jag växte upp var jag en hängiven Lego byggare. Det var innan alla coola teknikpaket fanns så de flesta paket jag fick innehöll bas-komponenter. Det gjorde faktiskt inte så mycket för med fantasi och kreativitet kunde man ändå bygga med oändliga variationer. Men det fanns ju ändå vissa tillägg som verkligen lyfte allt till nya nivåer. Ett sådant var när jag fick mina första motorer, men jag minns också väldigt väl en låda som innehöll en sats med kugghjul i olika storlekar. Wow, vad det utvidgade mina möjligheter!
lego.png

Min verktygslåda växer

Jag har nu varit utvecklare i 30 år och jobbat med många olika tekniker: backend, databaser, frontend, m.m. Men jag kan med jämna mellanrum få samma härliga wow-känsla som i barndomen, när jag får nya verktyg att bygga med. När det kommer nya ramverk eller när mina viktigaste verktyg kommer i nya versioner så är det som om mina möjligheter utvidgas. Jag kan göra mer. Jag kan bygga vackrare. Det jag gör kan bli snyggare och snabbare. Jag drivs av att bygga funktionalitet som löser problem. Med bättre verktyg kan jag komma längre.

På senare år har november blivit en ganska säker höjdpunkt eftersom Microsoft .NET numera släpps regelbundet med major versioner i början av november. Jag ser fram emot detta mer än till julafton.

Verktyg

Jag har testat många olika teknikspår, men är nog mest hemma inom Microsoft sfären. För 20-30 år sedan var det ärligt talat inte så coolt. Men numera skulle jag säga att det är mycket tacksamt att följa det spåret för det kommer mycket bra framsteg i en mycket hög takt. I och med Open Source och en öppnare attityd så finns det hela tiden mycket roligt att upptäcka.

När konferensen DotnetConf genomförs så finns det 3 dagar med föredrag om alla nyheter. Jag brukar ägna en rätt stor del av min fritid till att lyssna igenom ca hälften av dem.

Det finns hur mycket som helst att ta till sig, men här kommer bara några av de nyheter som jag uppskattade mest i år:

Blazor växer som tåget

Blazor är ett koncept som dök upp litet som gubben i lådan för några år sedan som ett nytt sätt att tänka frontend. Numera är det etablerat och en viktig byggsten i Microsofts webstrategi. Istället för att skriva frontend logik med någon variant av javascript så skriver man både frontend och backend med sitt favorit språk (C#) och frontend delarna kompileras till webassembly. Vinsterna är framförallt att man kan använda ett högnivå språk även till frontend logiken och slipper översätta modeller och annan kod som ska användas på bägge sidor.
Den största nyheten för Blazor i år är att man kan utgå från en modell där man bygger med Server Side Rendering som start och sedan flexibelt och dynamiskt blanda in de två andra strategierna med Server Hosting och Webassembly (Client) Hosting på de platser där man tycker det passar bäst. I kombination med detta använder man med fördel Stream Rendering och Enhanced Navigation för att få ett gränssnitt som uppför sig snabbt och effektivt. Det kommer nog att ta ett tag innan man lär sig att använda detta rätt, men mycket spännande.

EF Core 8

Det ORM verktyg som numera ingår och släpps synkat med resten av.NET ramverket fortsätter att ta bra steg framåt. I år är det bland annat:

  • Primitive collections
  • Complex types / Improved JSON mapping
  • Raw SQL for unmapped types (like Dapper)
  • Automatic length for discriminator columns
  • Support for DateOnly and TimeOnly
  • Improved ExecuteUpdate and ExecuteDelete
  • Enum default values
  • More effective IN queries

System.Text JSON

System.Text är ju det nya system namespace för att hantera JSON som kom i och med .NET Core. Det fortsätter att utökas med bra funktioner:

  • Snabbare
  • PreferredObjectCreationHandling=Populate kan deserialize properties even without setters
  • required and redundant properties
  • New naming policies: Kebab Lower/Upper, Snake Lower/Upper
  • JsonNode: DeepEquals and DeepClone


Polly V8

Polly är ett tredjeparts ramverk som funnits med länge. Dess begränsade men tydliga syfte är att göra anrop till externa tjänster med stabila. Med olika stratagier kan man ställa in sina anrop att försöka igen för att tåla eventuella dåliga uppkopplingar eller överbelastade tjänster.
Det nya nu är att Microsoft inser att Polly är en viktig komponent för hela plattformen. De går därför in med stora resurser och verktyget kommer nu helt ombyggt. Det ger bättre prestanda och bättre integration.

SignalR

Det ramverk för websocket kommunikation som funnits med länge och har ett bra rykte är nu utökat med Stateful Reconnect. Även tidigare var det så att en websocket connection som går ner, automatiskt kan återansluta sig. Det nya är att den nu automatiskt kan ackumulera allt som missats och skicka över det när connection är uppe igen.