Stvari koje trebate znati o .NET5

Završena je konferencija za predstavljanje nove .NET 5 platforme, koja je trajala od 10. -12. studenog.

.NET 5 najavljen je još prošle godine kao sljedeći korak s .NET Coreom.

Ideja je bila da će .NET 5 biti objedinjavajuća platforma za desktop, web, cloud, mobile, igre, IoT i AI aplikacije, dakle cilj je bio izvući najbolje od .NET Core, .NET Framework, Xamarina, i Mono-a te stvoriti jedinstvenu platformu .NET runtimea i frameworka. Zbog pandemije Covida-19 ujedinjenje je odgođeno za .NET 6 (trebalo bi biti objavljeno u studenom 2021.).

Pilot verzija predstavljena je već 13.10., a 10.11.  je stigla finalna verzija .NET 5.0, a na samom početku konferencije Scott Hunter, direktor Program Managementa za .NET rekao je vezano za odgodu :

„Nastavljamo put ujedinjavanja .NET platforme. Naša vizija jednog .NET-a jedinstveni je skup knjižnica, alata, SDK-ova i runtimeova.”

Što je novo?

Scott Hunter detaljno je opisao što se sve mijenja :

  • Novo izdanje usredotočeno je na poboljšanja .NET Core 3.1:
  • Manje aplikacije u jednoj datoteci te smanjeno korištenje memorije. Ipak bitno je naglasiti da su aplikacije s jednom datotekom u .NET 5 prvenstveno usmjerene na Linux – aplikacije, a za Windows i macOS i dalje trebaju dodatne datoteke (izvorne izvršne datoteke). Novo izdanje također sadrži smanjene veličine spremnika za slike, nove API-je spremnika i nova ciljna imena frameworka(target framework names).

U .NET 5 ciljni frameworkovima navedeni su u .csproj projektnim datotekama s Target Framework Monikersima (TFM), koji su kratka kodna imena koja se koriste za identificiranje skupa API-ja ciljanih zadanim projektom.Sada razvoj aplikacije na određenoj platformi .NET 5 je naš izbor, a ne ovisno o runtime implementaciji koju koristimo za razvoj aplikacije.

  • Poboljšani JsonSerializer API-ji među glavnim su značajkama .NET 5, uz mnoga značajna poboljšanja performansi;
  • Podrška za Windows ARM64;
  • Nove glavne verzije jezika (C # 9 i F # 5) također su predstavljene kao dio ovog izdanja.

Nadalje bitna je promjena po pitanju performansi pa za primjer možemo vidjeti Garbage collection(GC), kod kojeg se veliki napor ulaže u smanjenje alokacije, ne zato što je sam postupak alokacije posebno „skup“, već zbog naknadnih troškova čišćenja nakon tih alokacija.

Najbolja mjera za uočavanje promjene perfromansi je “vrijeme pauze” GC-a, što zapravo znači koliko dugo GC mora pauzirati vrijeme izvođenja kako bi mogao obaviti svoj posao.

Na .NET Core 3.1 imamo vrijeme:

Dok za .NET 5, imamo :

Just-In-Time (JIT) compiler ima mnoštvo poboljšanja koja su našla put do izdanja. Kao i kod bilo kojeg kompajlera, poboljšanja JIT-a mogu imati široko dostupne učinke. Često pojedinačne promjene imaju mali utjecaj na pojedini dio koda, ali takve promjene kada se zbroje, zbog velikog broja mjesta na kojima se primjenjuju, čine veliku razliku.

Neka od poboljšanja koja su ušla u JIT u .NET 5 su:

. dotnet / runtime # 32368 uzrokuje da JIT vidi duljinu niza kao unsigned, što rezultira mogućnošću korištenja bolje instrukcije za neke matematičke operacije (npr. dijeljenje).

dotnet/coreclr # 25458 omogućuje JIT-u upotrebu bržih usporedbi temeljenih na 0 za neke unsigned integer operacije.

Performanse

Slijedi prikaz performansi;

Uočavamo da je došlo je do značajnih poboljšanja u socket performansama na Linuxu i u JSON API-u na .NET Core 3.1.

Kod .NET 5 imamo bolji JsonSerializer s poboljšanim collection handling-om i novim caching slojem.

Framework gRPC također je dobio posebnu pažnju te pokazuje značajan rast performansi u odnosu na .NET Core 3.1 (60% brže na poslužitelju, 230% brže na klijentu). Budući da gRPC koristi HTTP / 2 kao temeljni protokol, nova implementacija HTTP / 2 također je djelomično odgovorna za uočeni  porast performansi.

ASP.NET Core

Framework ASP.NET Core također je primio nova poboljšanja performansi i izmjene kompatibilnosti. Nove značajke uključuju Azure AD provjeru autentičnosti s Microsoft.Identity.Web podršku za paralelne pozive čvorišta u SignalR-u i otvorenu specifikaciju API-ja (Swagger) prema zadanim postavkama u ASP.NET Core API projektima. Poboljšanja performansi Blazor WebAssembly usredotočena su na složeno prikazivanje korisničkog sučelja(UI) (virtualizacija komponenata i pre-renderiranje) i JSON serializaciju. Kao rezultat toga, Blazor WebAssembly u .NET 5, 2-3 puta je brži od Blazor WebAssembly-a 3.2.

Nove značajke u C #

NET 5 dolazi s C # 9, novom verzijom glavnog programskog jezika .NET platforme. Postoji nekoliko novih značajki, ali ovdje ćemo prikazati neke.

Init-only properties

Inicijalizatori objekata su poprilično sjajni. Daju klijentu vrlo fleksibilan i čitljiv format za stvaranje objekta, a posebno su dobri za stvaranje ugniježđenih objekata gdje se cijelo stablo objekata kreira u jednom potezu. Evo jednostavnog primjera:

var person = new Person {

    FirstName = “Split”, LastName = “TechCity”

};

public class Person

{

    public string? FirstName { get; set; }

    public string? LastName { get; set; }

}

public class Person

{

    public string? FirstName { get; init; }

    public string? LastName { get; init; }

}

Jedno veliko ograničenje je promjenjivost svojstava kako bi inicijalizatori objekta radili; funkcioniraju tako da prvo pozovu konstruktor objekta, a zatim se dodijele property setters-ima. Init-only svojstva riješavaju problem uvodeći init accessor koji je varijanta set accessora koji se može pozvati samo tijekom inicijalizacije objekta.

Top-level programs

Za pisanje jednostavnog programa na jeziku C# potrebna je izuzetna količina standardnog koda no u C # 9.0 možemo jednostavno napisati svoj program:

using System;

class Program

{

    static void Main()

    {

        Console.WriteLine(“Hello World!”);

    }

}

U C # 9.0 možemo napisati samo

using System;

Console.WriteLine(“Hello World!”);

Pattern matching

Nekoliko novih vrsta uzoraka dodano je u C # 9.0., a mogu se pogledati ovdje. Ostale promjene mogu se vidjeti na službenim stranicama.

Tehnologije koje više neće biti podržane

ASP.NET Web Forms dugo je vremena bila glavna tehnologija za izgradnju dinamičkih web korisničkih sučelja(UI). S obzirom da je vezana za .NET Framework koji odlazi nećemo više moći koristiti web forms.

Međutim, ima nekoliko alternativa za izradu web korisničkog sučelja(UI). Za web aplikacije koristit će se Razor Pages, a ako želite izraditi web aplikaciju može se koristiti Blazor.

Windows Communication Foundation (WCF) – tradicionalni komunikacijski okvir za Windows također odlazi u povijest. Alternativa WCF-u koji preporučuje Microsoft je prelazak na gRPC, ali ako ste naviknuti na WCF ili se želite pripremiti za lagan prijelaz, možete korisiti open source projekt CoreWCF.

Zaključno

Nadam se da sam vam ovim člankom uspio približiti nekih promjene i ideju kako će .NET 5 utjecati na vaše postojeće .NET projekte i koje će vam mogućnosti nova platforma ponuditi.

Za kraj jedan od razloga zašto ne možemo zanemariti .Net ecosystem možemo vidjeti po brojkama:

.NET 5 možete skinuti ovdje.

Podijeli

O autoru

Manojlo Ilić