.NET versus .NET Framework voor server-apps

Er zijn twee ondersteunde .NET-implementaties voor het bouwen van apps aan de serverzijde.

Implementatie Opgenomen versies
.NET .NET Core 1.0 - 3.1, .NET 5 en latere versies van .NET.
.NET Framework .NET Framework 1.0 - 4.8

Beide delen veel van dezelfde onderdelen en u kunt code over de twee delen. Er zijn echter fundamentele verschillen tussen de twee en uw keuze is afhankelijk van wat u wilt bereiken. Dit artikel bevat richtlijnen voor het gebruik van elk item.

Gebruik .NET voor uw servertoepassing wanneer:

  • U hebt platformoverschrijdende behoeften.
  • U richt zich op microservices.
  • U gebruikt Docker-containers.
  • U hebt krachtige en schaalbare systemen nodig.
  • U hebt naast elkaar .NET-versies per toepassing nodig.

Gebruik .NET Framework voor uw servertoepassing wanneer:

  • Uw app maakt momenteel gebruik van .NET Framework (aanbeveling is om uit te breiden in plaats van te migreren).
  • Uw app maakt gebruik van bibliotheken van derden of NuGet-pakketten die niet beschikbaar zijn voor .NET.
  • Uw app maakt gebruik van .NET Framework-technologieën die niet beschikbaar zijn voor .NET.
  • Uw app maakt gebruik van een platform dat .NET niet ondersteunt.

Wanneer moet u .NET kiezen

De volgende secties geven een gedetailleerdere uitleg van de eerder genoemde redenen voor het kiezen van .NET via .NET Framework.

Platformoverschrijdende behoeften

Als uw web- of servicetoepassing moet worden uitgevoerd op meerdere platforms, bijvoorbeeld Windows, Linux en macOS, gebruikt u .NET.

.NET ondersteunt de eerder genoemde besturingssystemen als uw ontwikkelwerkstation. Visual Studio biedt een IDE (Integrated Development Environment) voor Windows en macOS. U kunt ook Visual Studio Code gebruiken, dat wordt uitgevoerd op macOS, Linux en Windows. Visual Studio Code ondersteunt .NET, waaronder IntelliSense en foutopsporing. De meeste externe editors, zoals Sublieme, Emacs en VI, werken met .NET. Deze externe editors krijgen editor IntelliSense met behulp van Omnisharp. U kunt ook elke code-editor vermijden en rechtstreeks gebruikmaken van de .NET CLI, die beschikbaar is voor alle ondersteunde platforms.

Microservicearchitectuur

Een microservicesarchitectuur biedt een combinatie van technologieën binnen een servicegrens. Deze technologiemix maakt een geleidelijke omhelzing van .NET mogelijk voor nieuwe microservices die met andere microservices of services werken. U kunt bijvoorbeeld microservices of services combineren die zijn ontwikkeld met .NET Framework, Java, Ruby of andere monolithische technologieën.

Er zijn veel infrastructuurplatforms beschikbaar. Azure Service Fabric is ontworpen voor grote en complexe microservicesystemen. Azure-app Service is een goede keuze voor stateless microservices. Microservicesalternatieven op basis van Docker passen bij elke microservicesbenadering, zoals wordt uitgelegd in de sectie Containers . Al deze platforms ondersteunen .NET en maken ze ideaal voor het hosten van uw microservices.

Zie .NET Microservices voor meer informatie over microservicesarchitectuur. Architectuur voor in containers geplaatste .NET-toepassingen.

Containers

Containers worden vaak gebruikt met een microservicesarchitectuur. Containers kunnen ook worden gebruikt voor het in containers plaatsen van web-apps of -services die elk architectuurpatroon volgen. .NET Framework kan worden gebruikt in Windows-containers. Toch maken de modulariteit en lichtgewicht aard van .NET het een betere keuze voor containers. Wanneer u een container maakt en implementeert, is de grootte van de installatiekopieën veel kleiner met .NET dan met .NET Framework. Omdat het platformoverschrijdend is, kunt u server-apps implementeren in Linux Docker-containers.

Docker-containers kunnen worden gehost in uw eigen Linux- of Windows-infrastructuur of in een cloudservice zoals Azure Kubernetes Service. Azure Kubernetes Service kan toepassingen op basis van containers in de cloud beheren, organiseren en schalen.

Krachtige en schaalbare systemen

Wanneer uw systeem de best mogelijke prestaties en schaalbaarheid nodig heeft, zijn .NET en ASP.NET Core de beste opties. De krachtige serverruntime voor Windows Server en Linux maakt ASP.NET Core een top presterend webframework op TechEmpower-benchmarks.

Prestaties en schaalbaarheid zijn met name relevant voor microservicearchitecturen, waarbij honderden microservices mogelijk worden uitgevoerd. Met ASP.NET Core worden systemen uitgevoerd met een veel lager aantal servers/virtuele machines (VM). De gereduceerde servers/VM's besparen kosten op infrastructuur en hosting.

Naast elkaar .NET-versies per toepassingsniveau

Als u toepassingen met afhankelijkheden op verschillende versies van .NET wilt installeren, raden we .NET aan. Deze implementatie ondersteunt de side-by-side installatie van verschillende versies van de .NET Runtime op dezelfde computer. De side-by-side-installatie staat meerdere services toe op dezelfde server, elk op een eigen versie van .NET. Het verlaagt ook de risico's en bespaart geld in toepassingsupgrades en IT-bewerkingen.

Naast elkaar installeren is niet mogelijk met .NET Framework. Het is een Windows-onderdeel en slechts één versie kan op een computer tegelijk bestaan. Elke versie van .NET Framework vervangt de vorige versie. Als u een nieuwe app installeert die is gericht op een latere versie van .NET Framework, kan het zijn dat bestaande apps die op de computer worden uitgevoerd, worden onderbroken omdat de vorige versie is vervangen.

Wanneer moet u .NET Framework kiezen

.NET biedt aanzienlijke voordelen voor nieuwe toepassingen en toepassingspatronen. .NET Framework blijft echter de natuurlijke keuze voor veel bestaande scenario's en daarom wordt .NET Framework niet vervangen door .NET voor alle servertoepassingen.

Huidige .NET Framework-toepassingen

In de meeste gevallen hoeft u uw bestaande toepassingen niet te migreren naar .NET. In plaats daarvan raden we u aan .NET te gebruiken wanneer u een bestaande toepassing uitbreidt, zoals het schrijven van een nieuwe webservice in ASP.NET Core.

Bibliotheken van derden of NuGet-pakketten zijn niet beschikbaar voor .NET

.NET Standard maakt het delen van code mogelijk voor alle .NET-implementaties, waaronder .NET Core/5+. Met .NET Standard 2.0 kunnen .NET Standard- en .NET-projecten met een compatibiliteitsmodus verwijzen naar .NET Framework-bibliotheken. Zie Ondersteuning voor .NET Framework-bibliotheken voor meer informatie.

U moet .NET Framework alleen gebruiken in gevallen waarin de bibliotheken of NuGet-pakketten technologieën gebruiken die niet beschikbaar zijn in .NET Standard of .NET.

.NET Framework-technologieën zijn niet beschikbaar voor .NET

Sommige .NET Framework-technologieën zijn niet beschikbaar in .NET. In de volgende lijst ziet u de meest voorkomende technologieën die niet in .NET zijn gevonden:

  • ASP.NET Web Forms-toepassingen: ASP.NET Web Forms zijn alleen beschikbaar in .NET Framework. ASP.NET Core kan niet worden gebruikt voor ASP.NET webformulieren.

  • ASP.NET webpaginatoepassingen: ASP.NET webpagina's zijn niet opgenomen in ASP.NET Core.

  • Werkstroomservices: Windows Workflow Foundation (WF), Workflow Services (WCF + WF in één service) en WCF Data Services (voorheen bekend als 'ADO.NET Data Services') zijn alleen beschikbaar in .NET Framework.

  • Taalondersteuning: Visual Basic en F# worden momenteel ondersteund in .NET, maar niet voor alle projecttypen. Zie Sjabloonopties voor dotnet nieuw voor een lijst met ondersteunde projectsjablonen.

Zie .NET Framework-technologieën die niet beschikbaar zijn in .NET voor meer informatie.

Platform biedt geen ondersteuning voor .NET

Sommige Microsoft- of platformen van derden bieden geen ondersteuning voor .NET. Sommige Azure-services bieden een SDK die nog niet beschikbaar is voor verbruik op .NET. In dergelijke gevallen kunt u de equivalente REST API gebruiken in plaats van de client-SDK.

Zie ook