Introduktion till .NET

.NET är en kostnadsfri plattformsoberoende utvecklarplattform med öppen källkod för att skapa många typer av program. Den kan köra program skrivna på flera språk, där C# är det mest populära. Den förlitar sig på en körning med höga prestanda som används i produktion av många storskaliga appar.

Information om hur du laddar ned .NET och börjar skriva din första app finns i Komma igång.

.NET-plattformen har utformats för att leverera produktivitet, prestanda, säkerhet och tillförlitlighet. Det ger automatisk minneshantering via en skräpinsamlare (GC). Det är typsäkert och minnessäkert på grund av att du använder en GC och strikta språkkompilatorer. Den erbjuder samtidighet viaawaitasync/och Task primitiver. Den innehåller en stor uppsättning bibliotek som har breda funktioner och har optimerats för prestanda på flera operativsystem och chiparkitekturer.

.NET har följande designpunkter:

  • Produktiviteten är fullstackad med körning, bibliotek, språk och verktyg som alla bidrar till utvecklarens användarupplevelse.
  • Valv kod är den primära beräkningsmodellen, medan osäker kod möjliggör ytterligare manuella optimeringar.
  • Både statisk och dynamisk kod stöds, vilket möjliggör en bred uppsättning distinkta scenarier.
  • Inbyggd kod interop och maskinvara är låg kostnad och hög återgivning (rå API och instruktionsåtkomst).
  • Koden är portabel mellan plattformar (OPERATIVSYSTEM och chiparkitektur), medan plattformsmål möjliggör specialisering och optimering.
  • Anpassningsbarhet mellan programmeringsdomäner (moln, klient, spel) aktiveras med specialiserade implementeringar av den allmänna programmeringsmodellen.
  • Branschstandarder som OpenTelemetry och gRPC gynnas framför skräddarsydda lösningar.

.NET underhålls av Microsoft och communityn. Den uppdateras regelbundet för att säkerställa att användarna distribuerar säkra och tillförlitliga program till produktion.

Komponenter

.NET innehåller följande komponenter:

  • Runtime – kör programkod.
  • Bibliotek – tillhandahåller verktygsfunktioner som JSON-parsning.
  • Compiler – kompilerar C# (och andra språk) källkod till körbar kod (runtime).
  • SDK och andra verktyg – möjliggör utveckling och övervakning av appar med moderna arbetsflöden.
  • Appstaplar – till exempel ASP.NET Core och Windows Forms, som gör det möjligt att skriva appar.

Körningen, biblioteken och språken är grundpelarna i .NET-stacken. Komponenter på högre nivå, till exempel .NET-verktyg och appstaplar, som ASP.NET Core, bygger ovanpå dessa pelare. C# är det primära programmeringsspråket för .NET och mycket av .NET är skrivet i C#.

C# är objektorienterad och körningen stöder objektorientering. C# kräver skräpinsamling och körningen tillhandahåller en spårnings-skräpinsamlare. Biblioteken (och även appstacken) formar dessa funktioner till begrepp och objektmodeller som gör det möjligt för utvecklare att produktivt skriva algoritmer i intuitiva arbetsflöden.

Kärnbiblioteken exponerar tusentals typer, varav många integreras med och driver C#-språket. Med C#- foreach instruktionen kan du till exempel räkna upp godtyckliga samlingar. Mönsterbaserade optimeringar gör att samlingar kan List<T> bearbetas enkelt och effektivt. Du kan lämna resurshantering till skräpinsamling, men snabb rensning är möjligt via IDisposable och direkt språkstöd i -instruktionen using .

Stöd för att göra flera saker samtidigt är grundläggande för praktiskt taget alla arbetsbelastningar. Det kan vara klientprogram som utför bakgrundsbearbetning samtidigt som användargränssnittet hålls dynamiskt, tjänster som hanterar tusentals samtidiga begäranden, enheter som svarar på en mängd samtidiga stimuli eller högdrivna datorer som parallelliserar bearbetningen av beräkningsintensiva åtgärder. Asynkront programmeringsstöd är en förstklassig funktion i C#-programmeringsspråket, som innehåller nyckelorden async och await som gör det enkelt att skriva och skriva asynkrona åtgärder samtidigt som du får alla fördelar med alla kontrollflödeskonstruktioner som språket har att erbjuda.

Typsystemet erbjuder betydande bredd, catering något lika med säkerhet, beskrivande, dynamik och inbyggda interop. Först och främst möjliggör typsystemet en objektorienterad programmeringsmodell. Den innehåller typer, arv (enkel basklass), gränssnitt (inklusive standardmetodimplementeringar) och sändning av virtuella metoder för att ge ett förnuftigt beteende för all typskiktning som objektorientering tillåter. Generiska typer är en genomgripande funktion som gör att du kan specialisera klasser till en eller flera typer.

.NET-körningen tillhandahåller automatisk minneshantering via en skräpinsamlare. För alla språk är dess minneshanteringsmodell sannolikt den mest definierande egenskapen. Detta gäller för .NET-språk. .NET har en självjustering, spårnings-GC. Det syftar till att leverera "hands off"-åtgärder i det allmänna fallet och samtidigt erbjuda konfigurationsalternativ för mer extrema arbetsbelastningar. Den nuvarande GC är resultatet av många års investeringar och lärdomar från en mängd olika arbetsbelastningar.

Värdetyper och stackallokerade minnesblock ger mer direkt kontroll på låg nivå över data och inbyggt plattformsinterop, till skillnad från . NET:s GC-hanterade typer. De flesta primitiva typerna i .NET, till exempel heltalstyper, är värdetyper och användare kan definiera sina egna typer med liknande semantik. Värdetyper stöds fullt ut via . NET:s generiska system, vilket innebär att generiska typer som List<T> kan tillhandahålla platta minnesrepresentationer utan extra kostnad för värdetypssamlingar.

Reflektion är ett "program som data"-paradigm som gör att en del av ett program dynamiskt kan fråga och anropa en annan, när det gäller sammansättningar, typer och medlemmar. Det är särskilt användbart för sent bundna programmeringsmodeller och verktyg.

Undantag är den primära felhanteringsmodellen i .NET. Undantag har fördelen att felinformation inte behöver representeras i metodsignaturer eller hanteras av varje metod. Korrekt undantagshantering är viktigt för programmets tillförlitlighet. För att förhindra att appen kraschar kan du avsiktligt hantera förväntade undantag i koden. En kraschad app är mer tillförlitlig och kan diagnostiseras än en app med odefinierat beteende.

Appstackar, som ASP.NET Core och Windows Forms, bygger vidare på och drar nytta av bibliotek, språk och körning på låg nivå. Appstaplarna definierar hur appar konstrueras och deras livscykel för körning.

SDK och andra verktyg möjliggör en modern utvecklarupplevelse, både på ett utvecklarskrivbord och för kontinuerlig integrering (CI). Den moderna utvecklarupplevelsen omfattar att kunna skapa, analysera och testa kod. .NET-projekt kan ofta skapas med ett enda dotnet build kommando som orkestrerar återställning av NuGet-paket och skapar beroenden.

NuGet är pakethanteraren för .NET. Den innehåller hundratusentals paket som implementerar funktioner i många scenarier. De flesta appar förlitar sig på NuGet-paket för vissa funktioner. NuGet-galleriet underhålls av Microsoft.

Kostnadsfritt och med öppen källa

.NET är kostnadsfritt, öppen källkod och är ett .NET Foundation-projekt. .NET underhålls av Microsoft och communityn på GitHub på flera lagringsplatser.

.NET-källa och binärfiler licensieras med MIT-licensen. Ytterligare licenser gäller för Windows.

Support

.NET stöds av flera organisationer som arbetar för att säkerställa att .NET kan köras på flera operativsystem och hållas uppdaterat. Den kan användas i Arm64-, x64- och x86-arkitekturer.

Nya versioner av .NET släpps årligen i november, enligt våra versioner och supportprinciper. Den uppdateras varje månad på Patch Tuesday (andra tisdagen), vanligtvis kl. 10.00 Stillahavstid.

.NET-ekosystem

Det finns flera varianter av .NET som var och en stöder en annan typ av app. Orsaken till flera varianter är delvis historisk, delvis teknisk.

.NET-implementeringar:

  • .NET Framework – den ursprungliga .NET. Det ger åtkomst till de breda funktionerna i Windows och Windows Server. Det stöds aktivt under underhåll.
  • Mono – Den ursprungliga communityn och öppen källkod .NET. En plattformsoberoende implementering av .NET Framework. Stöds aktivt för Android, iOS och WebAssembly.
  • .NET (Core) – Modern .NET. En plattformsoberoende och öppen källkod implementering av .NET, omdefinierad för molnåldern samtidigt som den är betydligt kompatibel med .NET Framework. Aktivt stöd för Linux, macOS och Windows.

Nästa steg