Razumijevanje Microsofta .NET 5

Jedna od ključnih tema Microsoftove strategije za razvojne programere 2020. možda se najbolje smatra pomicanjem između generacija. To je relativno glatka primopredaja, oblikovana kao objedinjavanje starih i novih načina rada. No na kraju, bilo da je riječ o Project Reunionu, WinUI-u 3 ili pokretanju .NET 5, nova tehnologija napreduje, ostavljajući staru iza sebe.

To nije loše. Iz mnogih razloga razvijamo nove načine kako raditi, ali oni se često spajaju oko jedne ključne točke: novi način je bolji. Rješava probleme koje stari alati nisu mogli i odgovara na nova pitanja koja nisu postavljena kad se definiralo izvorno rješenje.

Novi .NET za novi svijet

Svi se ti razlozi spajaju u prijelazu s .NET Framework na .NET 5. Prije dvadeset i kusur godina kada je definiran izvorni .NET Framework, izgradili smo monolitne klijent-poslužiteljske aplikacije u usko definiranim IT okruženjima. Sada gradimo kombinaciju laganih distribuiranih mikro usluga i mobilnih aplikacija s više platformi, koristeći infrastrukturu koja se brzo mijenja. To je, unatoč klišeju, posve novi svijet.

.NET Core dizajniran je za ovaj način rada; višeplatformska od početka svog života i namijenjena podršci novim mobilnim aplikacijama prvim u oblaku, kao i tradicionalnim .NET razvojnim obrascima i praksama. Pokupio je sve više i više API-ja kroz tri glavna izdanja, a kada su .NET standardne knjižnice počele nuditi zajednički cilj za kôd koji je olakšao dijeljenje projekata preko njega, .NET Framework i Xamarin.

.NET 5: Put za budući razvoj

Tehnički bi ovo novo izdanje trebalo biti .NET Core 4, ali Microsoft preskače broj verzije kako ne bi došlo do zabune s trenutnim izdanjem .NET Framework-a. Istodobno, prelazak na veći broj verzije i ispuštanje jezgre s imena ukazuje na to da je ovo sljedeći korak za sav razvoj .NET-a. Dva projekta i dalje zadržavaju naziv jezgre: ASP.NET Core 5.0 i Entity Framework Core 5, jer naslijeđeni projekti s istim brojevima verzija i dalje postoje.

To je važna prekretnica, označavajući točku na kojoj trebate razmotriti pokretanje svih novih projekata u .NET 5 i premještanje bilo kojeg postojećeg koda iz .NET Framework-a. Iako Microsoft ne uklanja podršku iz .NET Framework-a, u načinu je održavanja i neće dobiti nove značajke u budućim izdanjima bodova. Svi novi API-ji i razvoj zajednice bit će u .NET 5 (i 2021. dugoročnoj podršci .NET 6).

Neke poznate tehnologije poput Web Forms i Windows Communication Foundation zastarjele su u .NET 5. Ako ih i dalje koristite, za sada je najbolje ostati na .NET Framework 4 i planirati migraciju na novije, podržane tehnologije, poput kao ASP.NET-ove Razor Pages ili gRPC. Postoje planovi za potporu zajednice za alternativne okvire koji će nuditi slične API-je, ali rad s novijim pristupima pomoći će kodu zaštićenom od budućnosti i olakšati rad na više platformi.

Jedan pomalo zbunjujući aspekt .NET 5 je način rada s .NET Standard knjižnicama. Ne odlaze, premda ih .NET 5 kôd ne treba izravno referencirati jer su oni sada podskup ciljnog okvira .NET 5 (TFM). Ovaj novi TFM zamjenjuje stare netcoreapp i netstandard TFM-ove, premda ako pišete kôd koji treba dijeliti između okvira, i dalje možete koristiti .NET Standard 2.0 TFM u svrhu kompatibilnosti. Međutim, u većini slučajeva vjerojatno ćete raditi samo u okruženju .NET 5, tako da se sigurno možete držati net5.0TFM deklaracije.

Početak rada s .NET 5

.NET 5.0 nastavlja s gostovanjem istog poznatog skupa jezika, uključujući nove verzije C # i F #. Oni dodaju mnoge nove značajke i dolaze kao dio Visual Studija 16.8 ili s ažuriranim proširenjem C # Visual Studio Code. Microsoft je premjestio okvir i sve njegove implementacije, poput većine Mono-a, u jedno GitHub-ovo spremište, konsolidirajući razvoj i osiguravajući da sve verzije imaju iste temeljne značajke. Kako se Microsoft premješta na .NET 6, donijet će i druge implementacije više razine, uključujući Xamarin.

Novi .NET ostaje zasnovan na pravovremenim tehnikama kompajlera razvijenim za izvorno runtime Common Language. Novi CoreCLR nastavlja poboljšavati performanse, istovremeno radeći na više arhitektura procesora. Dolaskom Appleovih procesora zasnovanih na M1 ARM, kôd napisan u .NET-u za macOS izvodit će se kao izvorni binarni programi na hardveru koji se temelji na Intel-u i ARM-u, tako da kôd neće morati proći drugi sloj emulacije. Podrška za ARM64 omogućit će .NET 5 aplikacijama da se izvorno pokreću u sustavu Windows na ARM hardveru, iskorištavajući značajke Microsoftovih vlastitih SQ1 i SQ2 procesora.

Neki scenariji, poput Web Assembly-a i mobilnih operativnih sustava, zahtijevaju unaprijed kompilirani kôd, a .NET 5 nudi kompajler ispred vremena uz svoj JIT alat. AOT kompajler sada je dostupan za bilo koje razvojno okruženje, a tim Uno platforme već bilježi značajna povećanja brzine za podršku web skupštine, redoslijedom 7 do 15 puta u odnosu na prethodni tumač jezika web skupštine.

Planira se AOT kompajler učiniti dostupnim kao opcija za aplikacije kojima je potrebno brzo pokretanje i manji otisci memorije, na primjer na pametnim satovima s ograničenim resursima i IoT hardveru. Druga mogućnost je postavljanje jedne datoteke. Sve što je potrebno za aplikaciju (uključujući vrijeme izvođenja) objedinjeno je u jedan paket, što olakšava postavljanje .NET aplikacija u spremnike ili na sustave koji nisu Windows.

Novi .NET ne bi se trebao gledati izolirano. Dodatni događaji oko Web Assembly-a s Blazorom i razvoja korisničkog sučelja na više platformi s MAUI-jem (multiplatform app UI), također su važni. Korištenjem kombinacije ovih tehnologija vrlo se malo toga ne može ciljati .NET 5, od hardvera klase Raspberry Pi do Android telefona do kontejnera koji se hostiraju u Kubernetesu i koji rade na AWS-u i Azureu.

Na .NET 6 2021

Jedna važna stvar je da je ovo samo još jedan korak u procesu. .NET 5 je ključna tehnologija za odvajanje Windows API-ja od OS-a, spajanje Project Reunion WinRT-a i Win32 API-ja i prelazak na WinUI 3 i MAUI kao UI slojeve. Veliki dio tog rada nastavlja se izdavanjem .NET 6 iz 2021. godine - ciljanog za mnoge od ovih projekata. Ne trebate čekati .NET 6 da biste započeli s migracijama. Što prije počnete, to bolje, što vam daje vremena da se pozabavite bilo kojim problemima koji se mogu pojaviti.

Trebali biste vidjeti .NET 5 kao prvi korak u sljedećem koraku .NET putovanja, onom gdje biste trebali početi uzimati sav taj naslijeđeni kôd i odlučiti što je potrebno prenijeti prijenosom i ažuriranjem, a što treba u potpunosti zamijeniti . Kako se 2020. godina završava, vjerojatno ćete planirati svoj razvojni raspored za 2021. godinu. Imajući to na umu, .NET 5 trebao bi biti leća koja će vam pomoći da se usredotočite na ono što treba učiniti kako bi vaše softversko imanje bilo spremno za mnogo bržu budućnost koja više nije vezana uz izdanja sustava Windows - ili uopće za sustav Windows.