Delen via


Wanneer moet u .NET voor Docker-containers kiezen

Tip

Deze inhoud is een fragment uit het eBook, .NET Microservices Architecture for Containerized .NET Applications, beschikbaar op .NET Docs of als een gratis downloadbare PDF die offline kan worden gelezen.

.NET Microservices Architecture for Containerized .NET Applications eBook cover thumbnail.

De modulariteit en lichtgewicht aard van .NET 8 maken het perfect voor containers. Wanneer u een container implementeert en start, is de installatiekopieën veel kleiner met .NET 8 dan met .NET Framework. Als u daarentegen .NET Framework voor een container wilt gebruiken, moet u uw installatiekopieën baseren op de Windows Server Core-installatiekopieën. Dit is veel zwaarder dan de Windows Nano Server- of Linux-installatiekopieën die u gebruikt voor .NET 8.

Daarnaast is .NET 8 platformoverschrijdend, zodat u server-apps kunt implementeren met Linux- of Windows-containerinstallatiekopieën. Als u echter gebruikmaakt van het traditionele .NET Framework, kunt u alleen installatiekopieën implementeren op basis van Windows Server Core.

Hier volgt een gedetailleerdere uitleg over waarom u .NET 8 moet kiezen.

Platformoverschrijdend ontwikkelen en implementeren

Als u een toepassing (web-app of service) wilt hebben die kan worden uitgevoerd op meerdere platforms die worden ondersteund door Docker (Linux en Windows), is de juiste keuze .NET 8, omdat .NET Framework alleen Windows ondersteunt.

.NET 8 biedt ook ondersteuning voor macOS als ontwikkelplatform. Wanneer u echter containers implementeert op een Docker-host, moet die host (momenteel) zijn gebaseerd op Linux of Windows. In een ontwikkelomgeving kunt u bijvoorbeeld een Virtuele Linux-machine gebruiken die op een Mac wordt uitgevoerd.

Visual Studio biedt een geïntegreerde ontwikkelomgeving (IDE) voor Windows en biedt ondersteuning voor Docker-ontwikkeling.

Visual Studio voor Mac is een IDE, ontwikkeling van Xamarin Studio, die wordt uitgevoerd op macOS en ondersteuning biedt voor ontwikkeling van Docker-toepassingen. Dit hulpprogramma moet de voorkeur hebben voor ontwikkelaars die werken op Mac-computers die ook een krachtige IDE willen gebruiken.

U kunt Visual Studio Code ook gebruiken in macOS, Linux en Windows. Visual Studio Code biedt volledig ondersteuning voor .NET 8, waaronder IntelliSense en foutopsporing. Omdat VS Code een lichtgewicht editor is, kunt u deze gebruiken om container-apps op de computer te ontwikkelen in combinatie met de Docker CLI en de .NET CLI. U kunt .NET 8 ook richten op de meeste externe editors, zoals Sublieme, Emacs, vi en het opensource OmniSharp-project, dat ook Ondersteuning biedt voor IntelliSense.

Naast de IDE's en editors kunt u de .NET CLI gebruiken voor alle ondersteunde platforms.

Containers gebruiken voor nieuwe ('green-field')-projecten

Containers worden vaak gebruikt in combinatie met een microservicesarchitectuur, hoewel ze ook kunnen worden gebruikt om web-apps of -services die een architectuurpatroon volgen, te containeriseren. U kunt .NET Framework in Windows-containers gebruiken, maar de modulariteit en de lichtgewicht aard van .NET 8 maakt het perfect voor containers en microservicesarchitecturen. Wanneer u een container maakt en implementeert, is de installatiekopieën veel kleiner met .NET 8 dan met .NET Framework.

Microservices maken en implementeren in containers

U kunt het traditionele .NET Framework gebruiken voor het bouwen van toepassingen op basis van microservices (zonder containers) met behulp van gewone processen. Op die manier zijn processen licht en snel te starten, omdat het .NET Framework al is geïnstalleerd en gedeeld tussen processen. Als u echter containers gebruikt, is de installatiekopieën voor het traditionele .NET Framework ook gebaseerd op Windows Server Core en dat maakt het te zwaar voor een benadering van microservices-on-containers. Teams zijn echter ook op zoek naar mogelijkheden om de ervaring voor .NET Framework-gebruikers te verbeteren. Onlangs is de grootte van de Windows Server Core-containerinstallatiekopieën gereduceerd tot >40% kleiner.

Aan de andere kant is .NET 8 de beste kandidaat als u een microservicesgeoriënteerd systeem gebruikt dat is gebaseerd op containers, omdat .NET 8 lichtgewicht is. Bovendien zijn de bijbehorende containerinstallatiekopieën, voor Linux of Windows Nano Server, mager en klein, waardoor containers licht en snel kunnen worden gestart.

Een microservice is bedoeld om zo klein mogelijk te zijn: licht zijn bij het draaien, om een kleine footprint te hebben, om een kleine gebonden context te hebben (controleer DDD, Domeingestuurd ontwerp), om een klein gebied van problemen weer te geven en snel te kunnen starten en stoppen. Voor deze vereisten wilt u kleine en snelle containerinstallatiekopieën gebruiken, zoals de .NET 8-containerinstallatiekopie.

Met een microservicesarchitectuur kunt u ook technologieën combineren binnen een servicegrens. Deze benadering maakt een geleidelijke migratie naar .NET 8 mogelijk voor nieuwe microservices die werken in combinatie met andere microservices of met services die zijn ontwikkeld met Node.js, Python, Java, GoLang of andere technologieën.

High-density implementeren in schaalbare systemen

Wanneer uw containersysteem de best mogelijke dichtheid, granulariteit en prestaties nodig heeft, zijn .NET en ASP.NET Core de beste opties. ASP.NET Core is maximaal 10 keer sneller dan ASP.NET in het traditionele .NET Framework en leidt dit tot andere populaire industrietechnologieën voor microservices, zoals Java-servlets, Go en Node.js.

Deze benadering is vooral relevant voor microservicearchitecturen, waarbij honderden microservices (containers) kunnen worden uitgevoerd. Met ASP.NET Core-installatiekopieën (op basis van de .NET-runtime) in Linux of Windows Nano kunt u uw systeem uitvoeren met een veel lager aantal servers of VM's, waardoor uiteindelijk kosten in infrastructuur en hosting worden bespaard.