Inleiding tot .NET
.NET is een gratis, platformoverschrijdend, opensource-ontwikkelaarsplatform voor het bouwen van vele soorten toepassingen. Het kan programma's uitvoeren die zijn geschreven in meerdere talen, met C# de populairste zijn. Het is afhankelijk van een hoogwaardige runtime die in productieomgevingen door veel grootschalige appswordt gebruikt.
Zie Aan de slagvoor meer informatie over het downloaden van .NET en het schrijven van uw eerste app.
Het .NET-platform is ontworpen om productiviteit, prestaties, beveiliging en betrouwbaarheid te leveren. Het biedt automatisch geheugenbeheer via een garbage collector (GC). Het is type-veilig en geheugenveilig, vanwege het gebruik van een GC en strikte taalcompilers. Het biedt gelijktijdigheid via async
/await
en Task
primitieven. Het bevat een grote set bibliotheken met een brede functionaliteit en die zijn geoptimaliseerd voor prestaties op meerdere besturingssystemen en chiparchitecturen.
.NET heeft de volgende ontwerppunten:
- Productiviteit is een volledige stack met runtime, bibliotheken, taal en hulpprogramma's die allemaal bijdragen aan de gebruikservaring van ontwikkelaars.
- veilige code het primaire rekenmodel is, terwijl onveilige code extra handmatige optimalisaties mogelijk maakt.
- statische en dynamische code worden beide ondersteund, waardoor een brede set verschillende scenario's mogelijk is.
- Native code-interoperabiliteit en hardware-intrinsieken hebben een lage kost en zijn hoogwaardig (onbewerkte API en instructietoegang).
- Code is overdraagbaar over verschillende platforms (OS- en chiparchitectuur), terwijl platformdoelgerichte ontwikkeling specialisatie en optimalisatie mogelijk maakt.
- Aanpassingsvermogen voor programmeerdomeinen (cloud, client, gaming) wordt mogelijk gemaakt door gespecialiseerde implementaties van het algemeen programmeermodel.
- Industriestandaarden zoals OpenTelemetry en gRPC worden verkozen boven op maat gemaakte oplossingen.
.NET wordt onderhouden door Microsoft en de community. Het wordt regelmatig bijgewerkt om ervoor te zorgen dat gebruikers veilige en betrouwbare toepassingen implementeren in productie.
Onderdelen
.NET bevat de volgende onderdelen:
- Runtime: voert toepassingscode uit.
- Bibliotheken: biedt functionaliteit voor hulpprogramma's zoals JSON-parsering.
- Compiler: compileert C# (en andere talen) broncode in uitvoerbare code (runtime).
- SDK en andere hulpprogramma's: hiermee kunt u apps bouwen en bewaken met moderne werkstromen.
- App-stacks, zoals ASP.NET Core en Windows Forms, waarmee apps kunnen worden geschreven.
De runtime, bibliotheken en talen zijn de pijlers van de .NET-stack. Onderdelen op een hoger niveau, zoals .NET-hulpprogramma's en app-stacks, zoals ASP.NET Core, bouwen voort op deze pijlers. C# is de primaire programmeertaal voor .NET en veel van .NET is geschreven in C#.
C# is objectgeoriënteerd en de runtime ondersteunt objectstand. C# vereist garbagecollection en de runtime biedt een tracering garbagecollector. De bibliotheken (en ook de app-stacks) vormen deze mogelijkheden in concepten en objectmodellen waarmee ontwikkelaars productief algoritmen kunnen schrijven in intuïtieve werkstromen.
De kernbibliotheken maken duizenden typen beschikbaar, waarvan velen integreren met de C#-taal en deze brandstof geven. Met de foreach
-instructie van C# kunt u bijvoorbeeld willekeurige verzamelingen inventariseren. Met op patronen gebaseerde optimalisaties kunnen verzamelingen zoals List<T>
eenvoudig en efficiënt worden verwerkt. U kunt het beheer van resources overlaten aan de garbage collector, maar snel opschonen is mogelijk via IDisposable
en directe ondersteuning van de taal in de using
-statement.
Ondersteuning voor het tegelijkertijd uitvoeren van meerdere dingen is fundamenteel voor vrijwel alle workloads. Dat kunnen clienttoepassingen zijn die achtergrondverwerking uitvoeren terwijl de gebruikersinterface responsief blijft, services die vele duizenden gelijktijdige aanvragen verwerken, apparaten reageren op een groot aantal gelijktijdige prikkels of machines met hoge kracht die de verwerking van rekenintensieve bewerkingen parallelliseren. Asynchrone programmeerondersteuning is een eersteklas functie van de C#-programmeertaal, die de async
en await
trefwoorden biedt waarmee u eenvoudig asynchrone bewerkingen kunt schrijven en opstellen terwijl u nog steeds profiteert van de volledige voordelen van alle besturingsstroomconstructies die de taal te bieden heeft.
Het typesysteem biedt aanzienlijke breedte, en komt op een evenwichtige manier tegemoet aan veiligheid, beschrijfbaarheid, dynamiek en native interop. In de eerste plaats maakt het typesysteem een objectgeoriënteerd programmeermodel mogelijk. Het bevat typen, overname van (één basisklasse), interfaces (inclusief standaardmethode-implementaties) en virtuele methodeverzending om een verstandig gedrag te bieden voor alle typelagen die de objectstand toestaat. Algemene typen zijn een wijdverbreide functie waarmee u klassen kunt specialiseren naar een of meer typen.
De .NET-runtime biedt automatisch geheugenbeheer via een garbagecollector. Voor elke taal is het model voor geheugenbeheer waarschijnlijk het meest gedefinieerde kenmerk. Dit geldt voor .NET-talen. .NET heeft een zelfafstemming, tracering van GC. Het is erop gericht om 'hands off'-bewerking te leveren in het algemene geval en biedt configuratieopties voor extremere werkbelastingen. De huidige GC is het resultaat van vele jaren van investeringen en lessen uit een groot aantal workloads.
Waardetypen en stack-toegewezen geheugenblokken bieden meer directe controle op laag niveau over gegevens en systeemeigen platforminteroperabiliteit, in tegenstelling tot de door .NET's GC beheerde typen. De meeste primitieve typen in .NET, zoals gehele getallen, zijn waardetypen en gebruikers kunnen hun eigen typen definiëren met vergelijkbare semantiek. Waardetypen worden volledig ondersteund via het generieke systeem van .NET, wat betekent dat generieke typen zoals List<T>
platte, overheadvrije geheugenweergaven van verzamelingen van waardetypen kunnen bieden.
Reflectie is een paradigma voor programma's als gegevens, waardoor één deel van een programma dynamisch query's kan uitvoeren en een andere kan aanroepen, wat betreft assembly's, typen en leden. Het is vooral handig voor laat gebonden programmeermodellen en hulpprogramma's.
Uitzonderingen zijn het primaire model voor foutafhandeling in .NET. Uitzonderingen hebben het voordeel dat foutinformatie niet hoeft te worden weergegeven in methodehandtekeningen of worden verwerkt door elke methode. De juiste afhandeling van uitzonderingen is essentieel voor de betrouwbaarheid van toepassingen. Als u wilt voorkomen dat uw app vastloopt, kunt u opzettelijk verwachte uitzonderingen in uw code afhandelen. Een vastgelopen app is betrouwbaarder en diagnosticeerbaar dan een app met niet-gedefinieerd gedrag.
App-stacks, zoals ASP.NET Core en Windows Forms, bouwen voort op en profiteren van bibliotheken op laag niveau, taal en runtime. De app-stacks definiëren de manier waarop apps worden samengesteld en hun levenscyclus van uitvoering.
De SDK en andere hulpprogramma's maken een moderne ontwikkelaarservaring mogelijk, zowel op een desktop voor ontwikkelaars als voor continue integratie (CI). De moderne ontwikkelaarservaring omvat het bouwen, analyseren en testen van code. .NET-projecten kunnen vaak worden gebouwd met één dotnet build
opdracht, waarmee nuGet-pakketten worden hersteld en afhankelijkheden worden gebouwd.
NuGet is pakketbeheerder voor .NET. Het bevat honderdduizenden pakketten die functionaliteit implementeren voor veel scenario's. Een meerderheid van de apps is afhankelijk van NuGet-pakketten voor bepaalde functionaliteit. De NuGet Gallery- wordt onderhouden door Microsoft.
Gratis en open source
.NET is gratis, open source en is een .NET Foundation project. .NET wordt onderhouden door Microsoft en de community op GitHub in verschillende opslagplaatsen.
.NET-bron- en binaire bestanden worden gelicentieerd met de MIT-licentie. Aanvullende licenties zijn van toepassing op Windows.
Ondersteuning
.NET wordt ondersteund door meerdere organisaties die ervoor zorgen dat .NET kan worden uitgevoerd op meerdere besturingssystemen en up-to-date blijft. Het kan worden gebruikt in Arm64-, x64- en x86-architecturen.
Nieuwe versies van .NET worden jaarlijks uitgebracht in november, volgens onze releases en ondersteuningsbeleid. Het wordt maandelijks bijgewerkt op Patch Tuesday (tweede dinsdag), meestal om 10.00 uur Pacific-tijd.
.NET-ecosysteem
Er zijn meerdere varianten van .NET, die elk een ander type app ondersteunen. De reden voor meerdere varianten is onderdeel historisch, deels technisch.
.NET implementaties:
- .NET Framework-: het oorspronkelijke .NET. Het biedt toegang tot de brede mogelijkheden van Windows en Windows Server. Het wordt actief ondersteund en onderhouden.
- Mono-: de oorspronkelijke community en open source van .NET. Een platformoverschrijdende implementatie van .NET Framework. Actief ondersteund voor Android, iOS en WebAssembly.
- .NET Core- -- Moderne .NET. Een platformoverschrijdende en opensource-implementatie van .NET, die opnieuw wordt gebruikt voor de cloudleeftijd, terwijl deze aanzienlijk compatibel blijft met .NET Framework. Actief ondersteund voor Linux, macOS en Windows.