Danes napovedujemo, da bo naslednja izdaja po .NET Core 3.0 .NET 5. To bo naslednja velika izdaja v seriji .NET.
V prihodnosti bo obstajal le en .NET, s katerim boste lahko razvijali Windows, Linux, macOS, iOS, Android, tvOS, watchOS in WebAssembly, med drugim.
V .NET 5 uvajamo nove .NET API-je, funkcije za izvajanje in jezikovne funkcije.
Začenši s projektom .NET Core, smo platformi dodali približno petdeset tisoč .NET Framework API-jev. .NET Core 3.0 zapolnjuje večino preostalih funkcijskih vrzeli .NET Framework 4.8 in podpira Windows Forms, WPF in Entity Framework 6. .NET 5 gradi na tem delu in izkorišča najboljše funkcije .NET Core in Mono za ustvarjanje platforme. Uporabite ga lahko za vso sodobno .NET kodo.
Nameravamo izdati .NET 5 novembra 2020 in prvi predogled lansirati v prvi polovici leta 2020. Podprt bo v prihodnjih posodobitvah za Visual Studio 2019, Visual Studio za Mac in Visual Studio Code.
.NET 5 = .NET Core vNext
.NET 5 je naslednji korak v .NET Core. Projekt si prizadeva izboljšati . NET:
- Zgradite .NET runtime in ogrodje, ki ga je mogoče uporabljati kjerkoli, z enotnim vedenjem v času izvajanja in izkušnjami razvijalcev.
- Z izkoriščanjem .NET Core, . NET Framework, Xamarin in Mono za razširitev zmogljivosti .NET.
- Z gradnjo izdelka iz ene same kode lahko razvijalci (Microsoft in skupnost) sodelujejo in se širijo za izboljšanje vseh scenarijev.
Ta nov projekt in smer sta pomemben prelomni trenutek za .NET. Z .NET 5 bodo vaša koda in projektne datoteke enake, ne glede na to, kakšno aplikacijo gradite. Vsaka aplikacija ima dostop do enakih funkcij za izvajanje, API in jezik. Vključuje tudi izboljšave zmogljivosti CoreFX, ki se izvajajo skoraj vsak dan.
Vse, kar imate radi pri .NET Core, bo še naprej obstajalo:
- Odprta koda in skupnostno usmerjena na GitHubu.
- Večplatformska implementacija.
- Podpirajte uporabo platformno specifičnih funkcij, kot so Windows obrazci in WPF na Windows, ter nativne vezave za vsako izvorno platformo iz Xamarin.
- Visoka zmogljivost.
- Namestite vzporedno z njo.
- Majhne projektne datoteke (SDK stil).
- Združljiv z ukaznimi vmesniki (CLI-ji).
- Integracija Visual Studio, Visual Studio za Mac in Visual Studio Code.
Pojavile so se tudi nekatere nove stvari:
- Imeli boste več možnosti za izkušnjo v času izvajanja (več o tem spodaj).
- Java interoperabilnost bo na voljo na vseh platformah.
- Več operacijskih sistemov bo podpiralo interoperabilnost Objective-C in Swift.
- CoreFX bo razširjen tako, da bo podpiral ahead-of-time (AOT) za .NET, manjši obseg in podporo za več operacijskih sistemov.
Septembra letos bomo izdali .NET Core 3.0, novembra 2020 .NET 5, nato pa nameravamo izdati večjo različico . NET:
Preskočili smo različico 4, ker bi zmedla uporabnike, ki poznajo .NET Framework, ki je že dolgo prisoten s serijo 4.x. Poleg tega želimo jasno sporočiti, da je .NET 5 prihodnost .NET platforme. Ime .NET 5 pomeni, da je to najvišja različica, kar smo jih kdaj izdali.
To priložnost izkoristimo tudi za poenostavitev poimenovanja. Menimo, da če je le en .NET najboljši, ne potrebujemo pojasnjevalnega izraza, kot je "Core". Krajše ime je poenostavitev in hkrati sporoča, da ima .NET 5 enotno funkcionalnost in obnašanje. Seveda lahko še naprej uporabljate ime ".NET Core", če želite.
Izkušnje v času izvajanja
Mono je izvirna večplatformska implementacija .NET. Začel se je kot odprtokodna alternativa .NET Frameworku in se s priljubljenostjo naprav iPhone/iOS in Android preusmeril na mobilne naprave. Mono je runtime, ki se uporablja kot del Xamarin.
CoreCLR je runtime, ki se uporablja kot del .NET Core. Primarno se uporablja za podporo oblačnim aplikacijam, vključno z največjo Microsoftovo storitvijo, zdaj pa se uporablja tudi v namizjih Windows, IoT in aplikacijah za strojno učenje.
Povzemimo, da si .NET Core in Mono runtime delita veliko podobnosti (navsezadnje sta oba .NE runtime), vendar imata tudi dragocene edinstvene lastnosti. Zelo smiselno je, da lahko izbereš izkušnjo v času izvajanja, ki jo želiš. Naredimo CoreCLR in Mono zamenljiva med seboj. Naredili bomo tako preprosto kot izdelavo stikala za izbiro med različnimi možnostmi v času izvajanja.
Naslednji razdelki opisujejo glavni poudarek, ki ga nameravamo uporabiti za .NET 5. Ponujajo jasen pogled na to, kako nameravamo razvijati ti dve runtime-ji posamezno in skupaj.
Visoka prepustnost in visoka produktivnost
Od začetka je .NET uporabljal prevajalnike just-in-time (JIT) za pretvorbo vmesne jezikovne kode (IL) v optimizirano strojno kodo. Od takrat smo zgradili vodilni v industriji, JIT-based managed runtime, ki ima zelo visoko prepustnost in hkrati izboljšuje izkušnjo razvijalcev, zaradi česar je programiranje hitro in enostavno.
JIT je idealen za dolgotrajne oblačne in odjemalske scenarije. Sposobni so generirati kodo, konfigurirano za določene računalnike, vključno s specifičnimi CPU ukazi. JIT lahko tudi ponovno generira metode med izvajanjem, tehniko, ki JIT pospeši, hkrati pa omogoča generiranje zelo optimiziranih različic kode, če postane pogosto uporabljena metoda.
Naša prizadevanja, da bi ASP.NET Core hitreje deloval na Techpower benchmarku, so odličen primer moči JIT in naše naložbe v CoreCLR. Naša prizadevanja za utrjevanje .NET Core za vsebnike so tudi dokaz sposobnosti izvajanja dinamičnega prilagajanja omejenim okoljem.
Orodja za razvijalce so še en odličen primer, kako je JIT res odličen, kot so dotnet watch tools ali edit and continue. Orodja pogosto potrebujejo večkratno prevajanje in nalaganje kode v enem samem procesu brez ponovnega zagona, in to zelo hitro.
Razvijalci, ki uporabljajo .NET Core ali .NET Framework, se predvsem zanašajo na JIT. Zato bi morala biti izkušnja znana.
Privzeta izkušnja za večino delovnih scenarijev .NET 5 uporablja JIT-osnovan CoreCLR runtime. Dve pomembni izjemi sta iOS in odjemalski Blazor (spletni asembler), saj oba zahtevata predhodno (AOT) nativno prevajanje.
Hiter zagon, majhen odtis in nizka poraba pomnilnika
Večina projekta Mono se osredotoča na mobilne naprave in konzole. Ključna lastnost in rezultat projekta je .NET AOT prevajalnik, ki temelji na vodilnem prevajalniku LLVM v industriji. Prevajalnik Mono AOT omogoča, da se .NET koda vgradi v izvorno izvršljivo kodo, ki lahko teče na računalniku, podobno kot C++ koda. Aplikacije, prevedene v AOT, lahko učinkovito delujejo na manjših lokacijah in po potrebi izmenjujejo prepustnost za zagon.
Projekt Blazor že uporablja Mono AOT. To bo eden prvih projektov, ki bo prešel na .NET 5. Uporabljamo ga kot eno od možnosti za dokazovanje tega načrta.
Obstajata dve vrsti rešitev AOT:
- Zahteva rešitev, ki je 100 % prevedena z AOT.
- Večina kode je rešitev, prevedena s strani AOT, vendar se JIT ali interpreterji lahko uporabljajo za vzorce kode, ki niso prijazni do AOT (kot so generični). Mono AOT podpira oba primera. Apple zahteva prvi AOT za iOS in nekatere konzole zaradi varnostnih razlogov. Druga metoda je boljša izbira, ker ponuja prednosti AOT in se izogne nekaterim slabostim.
.NET Native je naš AOT prevajalnik za Windows UWP aplikacije in je tudi primer prve zgoraj navedene vrste AOT. V tej implementaciji omejujemo .NET API in funkcije, ki jih lahko uporabljate. Iz te izkušnje smo se naučili, da morajo AOT rešitve pokrivati vse vidike .NET API-jev in vzorcev.
Kompilacija AOT je še vedno obvezna na iOS, spletnih asemblerjih in nekaterih konzolah. Za aplikacije, ki zahtevajo hitrejši zagon ali manjšo obremenitev, bomo omogočili prevajanje AOT.
Rojstvo projekta
Projekt smo začeli decembra 2018 s tehnično ekipo v Bostonu. Vodje oblikovanja iz .NET ekipe (Mono/Xamarin in .NET Core) ter Unityja so predstavili različne tehnične zmogljivosti in arhitekturne smeri.
Zdaj projekt premikamo naprej kot ekipa z nizom rezultatov. Od decembra smo dosegli velik napredek pri več projektih:
- Določen je minimalni sloj, ki določa runtime <-> upravljane kode z namenom doseči >99 % javne kode CoreFX.
- MonoVM lahko zdaj uporablja CoreFX in njegove knjižnice razredov.
- Vse CoreFX teste izvajajte na MonoVM z implementacijo CoreFX.
- Poganjam ASP.NET Core 3.0 aplikacij z MonoVM.
- Zaženi MonoDevelop na CoreCLR, nato zaženi Visual Studio za Mac.
Migriraj na en sam . Implementacija .NET odpira nekaj pomembnih vprašanj: Kakšen bo ciljni okvir? Ali so pravila združljivosti paketov NuGet enaka? Katere delovne obremenitve naj podpira .NET 5 SDK? Kako naj programiram za določeno arhitekturo? Ali še vedno potrebujemo .NET Standard? Trenutno delamo na teh vprašanjih in kmalu vam bomo delili oblikovalski dokument, da ga lahko preberete in podate povratne informacije.
Epilog
Projekt .NET 5 je pomembna in vznemirljiva nova smer za .NET. Videli boste, da bo .NET postal preprostejši, a tudi z večjim naborom funkcij in uporabnosti. Vsi novi razvojni dosežki in funkcije bodo del .NET 5, vključno z novimi različicami C#.
Vidimo svetlo prihodnost, kjer lahko uporabljate iste .NET API-je in jezike za ciljanje širokega nabora vrst aplikacij, operacijskih sistemov in silicijevih arhitektur. V Visual Studiu, Visual Studiu za Mac, Visual Studio Code, Azure DevOps ali ukazni vrstici je enostavno spremeniti konfiguracijo gradnje za gradnjo različnih aplikacij.
Izvirna povezava:Prijava do hiperpovezave je vidna.
|