Programiranje

Kaj je novega v Microsoft .NET 5

Microsoftov drugi kandidat za izdajo .NET 5 je prispel 13. oktobra in združitev .NET Framework in .NET Core združil še korak bližje do zaključka. Nova poenotena platforma .NET naj bi bila splošno dostopna 10. novembra 2020.

Microsoft Release Candidate 2 opisuje kot skoraj končno izdajo in zadnjo od dveh RC-jev. Začetni RC je bil objavljen 13. septembra. Kandidata za izdajo .NET 5.0 je mogoče prenesti s spletnega mesta dotnet.microsoft.com.

Cilji na visoki ravni za .NET 5 vključujejo zagotavljanje enotne izkušnje .NET SDK z eno samo BCL (knjižnico osnovnega razreda) v vseh aplikacijah .NET 5 in s podporo za izvorne in spletne aplikacije v več operacijskih sistemih. En sam izvorni aplikacijski projekt .NET 5 bi podpiral cilje, kot so Windows, Microsoft Duo (Android) in Apple iOS, z uporabo izvornih kontrol na teh platformah.

Dodatni cilji .NET 5 vključujejo podporo za gradnjo visokozmogljivih aplikacij v oblaku, hitrejše algoritme v BCL, boljšo podporo za vsebnike med izvajanjem in podporo za HTTP3. .NET 5.0 vključuje podporo za binarni format WebAssembly prek knjižnic Mono runtime in .NET. Predstavljen je tudi niz ničelnih zapisov referenčnega tipa.

.NET 5 tudi obljublja, da bo razvijalcem omogočil samodejno iskanje latentnih napak v kodi. Druge nove funkcije vključujejo Pol type, binarno plavajočo vejico, ki zavzame 16 bitov, in obrezovanje sklopa, ki obrezuje neuporabljene sklope, da zmanjša velikost aplikacij. Poudarjeno je tudi prilagojeno obrezovanje. Novo ujemanje vzorcev v C # 9 zajema relacijske, logične in preproste vzorce tipov. Možnost uvajanja ClickOnce je zdaj podprta za aplikacije .NET 5.0 Windows in aplikacije .NET Core 3.1.

Nova platforma .NET obljublja tudi izboljšave zmogljivosti. Bilten, ki se nanaša na Predogled 7, ki je prispel 21. julija, priznava približno 250 zahtev glede povpraševanja po poteh v .NET 5 in ugotavlja, da se čaka prijetno presenečenje za tiste, ki so spremljali delovanje .NET Core.

Drugi dodatki in izboljšave, omenjeni v biltenu .NET 5 Preview 7:

  • Novi API JSON System.text.json omogoča prezrtje privzetih vrednosti za lastnosti vrednostnega tipa pri serializaciji, kar je koristno za zmanjšanje serializacije in žičnih stroškov. To je prelomna sprememba. Za System.text.json je dodana tudi možnost obdelave krožnih referenc pri serializaciji, pri čemer se pričakuje, da bo oblika API zdaj dokončna.
  • Odvoz smeti zdaj prikazuje podrobne podatke o najnovejšem odvozu z uporabo GetGCMemoryInfo metoda, ki vrne a GCMemoryInfo strukt. GCMemoryInfo služi informacijam o pomnilniku računalnika in kopice ter najnovejši zbirki ali najnovejši zbirki vrste GC, ki je določena - kratkotrajna, popolna blokada ali ozadje. Najverjetnejši primeri uporabe tega API-ja so beleženje / spremljanje ali prikazovanje izravnalnika obremenitve, da je treba stroj odstraniti iz rotacije, da zahteva popoln GC. Medtem je bila izvedena še ena sprememba GC, da bi se draga ponastavitev pomnilnika preusmerila na razmere z malo pomnilnika.
  • Ryujit, generator zbirne kode za .NET, dobi izboljšave, od omogočanja izmikanja nekaterih preverjanj mej do izboljšanja podvajanja repa in izboljšav za odstranjevanje odvečnih ničelnih initov. Ryujit vsebuje tudi lastno lastnost strojne opreme ARM64 in optimizacijo API-jev.

.NET 5 Preview 6, izdan 25. junija, je odstranil vgrajeno podporo za WinRT (Windows Runtime), zbirko API-jev za gradnjo aplikacij Universal Windows Platform. To je prelomna sprememba; Aplikacije .NET Core 3.x, ki uporabljajo WinRT, je treba znova prevesti. Skupini .NET in Windows si prizadevata spremeniti način delovanja WinRT z operacijskim sistemom Windows, nadomeščajoč podporo WinRT z orodjem C # / WinRT v .NET 5. C # / WinRT je paket orodij, ki vsebuje NuGet in ponuja podporo za projekcijo WinRT za C #.

Druge spremembe v .NET 5 Predogled 6:

  • SDK za .NET 5 Preview 6 vključuje podporo za Windows Forms v napravah Windows ARM64. Nadaljuje se delo za dodajanje podpore za Windows Presentation Foundation v sistemu Windows ARM64.
  • Izboljšave kakovosti RyuJIT kode zajemajo obdelavo in optimizacijo struktur za odstranjevanje odvečnih ničelnih inicializacij. Prav tako je bil dosežen napredek pri optimizaciji notranje opreme strojne opreme ARM64, pa tudi pri izboljšanju ustvarjene kode za ARM64 z zmanjšano velikostjo kode.
  • Načrti za podporo platformi so posodobljeni.

.NET 5 Preview 5, objavljen 10. junija, vsebuje naslednje nove funkcije:

  • Prevajalnik RyuJIT JIT ima hitrejšo, prenosno izvedbo pomožnikov za tailcall. JIT prosi izvajalca za pomoč vsakič, ko ugotovi, da bo za izvedbo klica potreboval pomočnika. Tudi za RyuJIT je bil dosežen nadaljnji napredek pri izvajanju lastne strojne opreme ARM64. Druge izboljšave v RyuJIT vključujejo večjo hitrost v primeru, ki je vplival na prevajanje regularnih izrazov in izboljšano zmogljivost Intelove arhitekture.
  • Omogočen je izvoz za izvorne binarne datoteke s klici v kodo .NET. Gradnik te zmogljivosti je gostovanje podpore za API UnManagedCallersOnlyAttribute. Projekt domačega izvoza omogoča razkrivanje domačega izvoza po meri. Ne zahteva tehnologije interop na višji ravni, kot je COM, in je večplastna.
  • DirectoryServices.Protocols podpora se širi na Linux in MacOS.
  • Zdaj je podprta distribucija Linuxa Alpine 3.12.

Kandidata za izdajo .NET 5.0 lahko prenesete s spletnega mesta dot.net.microsoft.com.

.NET 5 Preview 4, izdan 19. maja, je predstavil naslednje nove zmogljivosti:

  • Podpora za jezik C # 9 in F # 5.
  • Izboljšana zmogljivost povratnih klicev, ki jih uporablja F #.
  • Izboljšana zmogljivost ToUpperInvariant, string.ToLowerInvariantin sorodni vzorci.
  • Izboljšana zmogljivost HTTP 1.1 in HTTP 2.
  • Izboljšan mehanizem štetja klicev.
  • Dinamična razširitev notranjega splošnega slovarja za odpravo uspešnic, ki jih je prizadela generična koda.
  • Kopica pripetega predmeta za zmanjšanje drobljenja kopice.
  • Aplikacije za eno datoteko, ki temeljijo na novem tipu objavljanja posamezne datoteke, ki zažene aplikacijo iz enega samega binarnega sistema.

Izboljšave v .NET 5 preview 3, predstavljene 23. aprila, vključujejo naslednje:

  • Razred BitArray za upravljanje niza bitnih vrednosti je bil posodobljen tako, da vključuje strojno pospešeno izvedbo za ARM64 z uporabo intrinzike ARM64. Izboljšave zmogljivosti BitArray so pomembne, je dejal Microsoft. Poleg tega je bila v CLR nadomeščena zamenjava skladb (OSR), da se omogoči spreminjanje kode, ki se izvaja s trenutno izvajanimi metodami, med izvajanjem metode, medtem ko so te metode aktivne "v skladišču". Ta zmožnost izboljšanja lastnosti delovanja stopenjskega prevajanja je zdaj eksperimentalna funkcija za vključitev v x64. Druga izboljšava za RyuJIT izboljša kakovost kode za strukture kot argumente v klicih položaja "rep call". RyuJIT naj bi ponujal tudi boljše delovanje generikov.
  • Dodatek podpore za ohranjanje referenc je bil dodan System.Txt.Json, ki omogoča obdelavo referenčne zanke za serializacijo JSON. Za JsonSerializer so zdaj podprti tudi nespremenljivi razredi in strukture. Zdaj je podprto tudi ravnanje z ničelno vrednostjo.
  • .NET SDK bo zdaj samodejno skliceval na paket NETFramework.ReferenceAssemblies NuGet, če bo v projektni datoteki imel ciljni okvir .NET Framework. Ta sprememba omogoča gradnjo projektov .NET Framework na računalniku brez nameščenega paketa za ciljanje .NET Framework. Ta izboljšava je značilna za ciljne pakete in ne upošteva drugih možnih odvisnosti od projekta.

Posebne izboljšave v .NET 5 preview 2, objavljene 2. aprila, so vključevale:

  • V RyuJIT so bile uvedene številne spremembe za izboljšanje kakovosti ustvarjene strojne kode, vključno z odpravljanjem podvojenih ničelnih inicializacij bolj agresivno in optimizacijami ničelnih okenc, ki so bile že uporabljene.
  • Strežniško zbiranje smeti na različnih nitih lahko zdaj krade, medtem ko označuje predmete gen0 / 1, ki jih hranijo predmeti starejše generacije. Delo kraje čez niti skrajša kratkočasne premore GC za scenarije, v katerih so nekatere niti GC označevale veliko dlje kot druge. Poleg tega je bil implementiran del funkcije pripetega kopice predmetov (POH), del, ki je namenjen zbiranju smeti, da zbiralcu omogoča ločeno upravljanje pripetih predmetov. S tem se izognemo negativnim učinkom pripetih predmetov na generacijske kupe.

Predogled 1, objavljen 16. marca, je vključeval izboljšave zmogljivosti regularnih izrazov in izboljšave kakovosti kode v RyuJIT.

.NET 5, ki bo predvidoma predstavljen novembra 2020, naj bi vključeval:

  • ASP.NET Core, odprtokodni okvir za spletne aplikacije.
  • Entity Framework Core tehnologija dostopa do podatkov.
  • WinForms.
  • WPF (Windows Presentation Foundation).
  • Model naprave za mobilne aplikacije Xamarin.
  • ML.NET.

Microsoft je dejal, da bo .NET 5 zagotovil enotno, enotno platformo za izdelavo kakršnih koli aplikacij. Podjetje polovico prometa usmerja na promet s svojega spletnega mesta .NET v različico .NET 5 kot testni primer z uporabo uravnoteženja obremenitve Azure.

Microsoft priporoča, da razvijalci ustvarijo nove programe z .NET Core 3.1 in jih nato preselijo na .NET 5. Družba je ugotovila, da lahko .NET Framework aplikacije pustite v .NET Framework, ki bo ostala podprta, dokler bo podprt sam Windows.