Programmering

Hva er nytt i Microsoft .NET 5

Microsofts andre utgivelseskandidat for .NET 5 ankom 13. oktober, og brakte fusjonen av .NET Framework og .NET Core ett skritt nærmere ferdigstillelse. Den nye enhetlige .NET-plattformen skal være tilgjengelig 10. november 2020.

Microsoft beskriver Release Candidate 2 som en nesten endelig utgivelse og den siste av to RC-er. En første RC ble publisert 13. september. .NET 5.0-utgivelseskandidaten kan lastes ned fra dotnet.microsoft.com.

Høynivåmål for .NET 5 inkluderer å gi en enhetlig .NET SDK-opplevelse, med et enkelt BCL (baseklassebibliotek) på tvers av alle. NET 5-applikasjoner, og med støtte for både native- og webapplikasjoner på tvers av flere operativsystemer. Et enkelt .NET 5-applikasjonsprosjekt støtter mål som Windows, Microsoft Duo (Android) og Apple iOS ved hjelp av innebygde kontroller på disse plattformene.

Ytterligere mål for .NET 5 inkluderer støtte for å bygge høyytelses skyapplikasjoner, raskere algoritmer i BCL, bedre støtte for containere i løpetid og støtte for HTTP3. .NET 5.0 inkluderer støtte for det binære formatet WebAssembly via Mono runtime og .NET-biblioteker. Et sett med nullbare referansetypekommentarer er også omtalt.

.NET 5 lover også å la utviklere automatisk finne latente feil i koden. Andre nye funksjoner inkluderer Halv type, et binært flytpunkt som opptar 16 biter, og monteringstrimming, som trimmer ubrukte enheter for å redusere størrelsen på applikasjoner. Tilpasset trimming er også uthevet. Nytt mønstermatch i C # 9 dekker relasjonelle, logiske og enkle typemønstre. ClickOnce-distribusjonsalternativet støttes nå for .NET 5.0 Windows-apper og .NET Core 3.1-apper.

Den nye .NET-plattformen lover også ytelsesforbedringer. En bulletin knyttet til Preview 7, som ankom 21. juli, anerkjenner rundt 250 ytelsesorienterte pull-forespørsler i .NET 5 og bemerker at en hyggelig overraskelse er i vente for de som har fulgt. NET Core-ytelsen.

Andre tillegg og forbedringer nevnt i .NET 5 Preview 7 bulletin:

  • Det nye System.text.json JSON API gir muligheten til å ignorere standardverdier for verditypeegenskaper når de serialiseres, noe som er nyttig for å redusere serialisering og ledningskostnader. Dette er en bruddendring. Også lagt til for System.text.json er muligheten til å håndtere sirkulære referanser når du serier, med API-form som nå forventes å være endelig.
  • Søppelinnsamling eksponerer nå detaljerte data om den siste samlingen, ved hjelp av GetGCMemoryInfo metode, som returnerer a GCMemoryInfo struct. GCMemoryInfo serverer informasjon om maskin- og haugeminne og den siste samlingen, eller den siste samlingen av den typen GC som er spesifisert - kortvarig, fullblokkering eller bakgrunn. De mest sannsynlige tilfellene for denne API-en er å logge / overvåke eller å indikere for en lastbalanser at en maskin skal tas ut av rotasjon for å be om full GC. En annen GC-endring ble i mellomtiden gjort for å utsette den dyre reset-minnedriften til situasjoner med lite minne.
  • Ryujit, monteringskodegeneratoren for .NET, får forbedringer fra å muliggjøre fjernelse av noen grensekontroller til forbedring av halen duplisering og forbedringer for å fjerne overflødige nullinnganger. Også omtalt i Ryujit er ARM64 maskinvareintrinsics og API-optimalisering.

NET 5 Preview 6, utgitt 25. juni, fjernet innebygd støtte for WinRT (Windows Runtime), en samling APIer for å bygge Universal Windows Platform-applikasjoner. Dette er en bruddendring; .NET Core 3.x-apper som bruker WinRT, må kompileres på nytt. NET- og Windows-teamene har jobbet for å endre måten WinRT fungerer med Windows, og erstattet WinRT-støtte med C # / WinRT-verktøykjeden i .NET 5. C # / WinRT er et NuGet-pakket verktøy som tilbyr WinRT-projeksjonsstøtte for C #.

Andre endringer i .NET 5 Preview 6:

  • NET 5 Preview 6 SDK inkluderer støtte for Windows Forms på Windows ARM64-enheter. Arbeidet fortsetter med å legge til støtte for Windows Presentation Foundation på Windows ARM64.
  • Forbedringer av RyuJIT-kodekvalitet dekker strukturhåndtering og optimalisering for å fjerne overflødige nullinitialiseringer. Det har også blitt gjort fremskritt innen optimalisering av maskinvareinnretningene i ARM64, samt forbedring av generert kode for ARM64, med redusert kodestørrelse.
  • Plattformstøtteplaner er oppdatert.

NET 5 Preview 5, utgitt 10. juni, inneholder følgende nye funksjoner:

  • RyuJIT JIT-kompilatoren har en raskere, bærbar implementering av tailcall-hjelpere. JIT ber kjøretiden om hjelp når den innser at den trenger en hjelper for å utføre et haleanrop. Også for RyuJIT har det vært fortsatt fremgang i implementeringen av maskinens egenutstyr for ARM64. Andre forbedringer i RyuJIT innebærer bedre hastighet i en sak som påvirket kompilering av vanlig uttrykk og forbedret Intel-arkitekturytelse.
  • Eksport for innfødte binære filer med anrop til .NET-kode er aktivert. Byggesteinen for denne funksjonen er vert for API-støtte for UnManagedCallersOnlyAttribute. Det opprinnelige eksportprosjektet muliggjør eksponering av tilpasset opprinnelig eksport. Det krever ikke en interop-teknologi på høyere nivå som COM og er plattformoverskridende.
  • DirectoryServices. Protokoller support utvides til Linux og MacOS.
  • Alpine 3.12 Linux-distribusjon støttes nå.

NET 5.0-utgivelseskandidaten kan lastes ned fra dot.net.microsoft.com.

NET 5 Preview 4, utgitt 19. mai, introduserte følgende nye muligheter:

  • C # 9 og F # 5 språkstøtte.
  • Forbedret ytelse for tailcalls brukt av F #.
  • Forbedret ytelse av ToUpperInvariant, string.ToLowerInvariantog relaterte mønstre.
  • Forbedret ytelse av HTTP 1.1 og HTTP 2.
  • En forbedret anropstellermekanisme.
  • Dynamisk utvidelse av den interne generiske ordboken for å eliminere ytelsesklipper rammet av generisk kode.
  • En festet gjenstandsbunke for å redusere haugfragmentering.
  • Enkeltfilapplikasjoner basert på en ny publiseringstype for én fil som kjører et program fra en enkelt binærfil.

Forbedringer i .NET 5 forhåndsvisning 3, avduket 23. april, inkluderer følgende:

  • BitArray-klassen for å administrere en rekke bitverdier ble oppdatert for å inkludere en maskinvareakselerert implementering for ARM64 ved bruk av ARM64-egenutstyr. BitArray ytelsesforbedringer er betydelige, sa Microsoft. I tillegg ble On Stack-erstatning (OSR) i CLR implementert for å tillate at kode utført av nåværende metoder endres midt i metodeutførelsen, mens disse metodene er aktive "på stack." Denne muligheten, for å forbedre ytelsesegenskapene til trinnvis kompilering, er nå en eksperimentell opt-in-funksjon på x64. En annen forbedring for RyuJIT forbedrer kodekvaliteten for strukturer som argumenter i "tail call" posisjonssamtaler. RyuJIT forventes også å tilby bedre ytelse av generiske legemidler.
  • Tillegg av støtte for å bevare referanser ble lagt til System.Txt.Json, som muliggjør håndtering av referansesløyfe for JSON-serialisering. Også uforanderlige klasser og strukturer støttes nå for JsonSerializer. Nå støttes også nullverdihåndtering.
  • .NET SDK vil nå automatisk referere til NETFramework.ReferenceAssemblies NuGet-pakken gitt et .NET Framework-målrammeverk i en prosjektfil. Denne endringen gjør det mulig å bygge .NET Framework-prosjekter på en maskin uten en .NET Framework-målrettingspakke installert. Denne forbedringen er spesifikk for målrettingspakker og tar ikke hensyn til andre mulige prosjektavhengigheter.

Spesifikke forbedringer i .NET 5 forhåndsvisning 2, utgitt 2. april, inkludert:

  • En rekke endringer har blitt gjort i RyuJIT for å forbedre kvaliteten på den genererte maskinkoden, inkludert dupliserte nullinitialiseringer som elimineres mer aggressivt og nullaktige boksoptimaliseringer påkalt tidligere.
  • Server-søppelinnsamling på forskjellige tråder kan nå stjele mens du merker gen0 / 1-objekter som holdes live av eldre generasjons objekter. Arbeid som stjeler over tråder forkorter kortvarige GC-pauser for scenarier der noen GC-tråder tok mye lengre tid å merke enn andre. I tillegg er en del av funksjonen Pinned Object Heap (POH) implementert, delen intern til søppeloppsamling, slik at samleren kan administrere festede objekter separat. Dette unngår de negative effektene av festede objekter på generasjonshauger.

Forhåndsvisning 1, utgitt 16. mars, inkluderte forbedringer av ytelsenes ytelse i tillegg til forbedringer av kodekvaliteten i RyuJIT.

På grunn av en produksjonsutgivelse i november 2020 er .NET 5 satt til å omfatte:

  • ASP.NET Core, et rammeverk med åpen kildekode for webapplikasjoner.
  • Entity Framework Core datatilgangsteknologi.
  • WinForms.
  • WPF (Windows Presentation Foundation).
  • Xamarin mobilapp-enhetsmodell.
  • ML.NET.

Microsoft sa at .NET 5 vil gi en enkelt, enhetlig plattform for å bygge alle typer applikasjoner. Selskapet leder halvparten av trafikken til .NET-nettstedstrafikken til en .NET 5-versjon som en testtilfelle ved hjelp av Azure belastningsbalansering.

Microsoft anbefaler at utviklere bygger nye applikasjoner med .NET Core 3.1 og deretter migrerer dem til. NET 5. Selskapet bemerket at. NET Framework-applikasjoner kan være igjen i. NET Framework, som vil forbli støttet så lenge Windows selv støttes.