Dela via


När du ska välja .NET för Docker-containrar

Dricks

Det här innehållet är ett utdrag från eBook, .NET Microservices Architecture for Containerized .NET Applications, tillgängligt på .NET Docs eller som en kostnadsfri nedladdningsbar PDF som kan läsas offline.

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

Modulariteten och den lätta karaktären hos .NET 8 gör den perfekt för containrar. När du distribuerar och startar en container är dess avbildning mycket mindre med .NET 8 än med .NET Framework. Om du däremot vill använda .NET Framework för en container måste du basera avbildningen på Windows Server Core-avbildningen, vilket är mycket tyngre än de Windows Nano Server- eller Linux-avbildningar som du använder för .NET 8.

Dessutom är .NET 8 plattformsoberoende, så du kan distribuera serverappar med Linux- eller Windows-containeravbildningar. Men om du använder det traditionella .NET Framework kan du bara distribuera avbildningar baserade på Windows Server Core.

Följande är en mer detaljerad förklaring av varför du väljer .NET 8.

Utveckla och distribuera plattformsoberoende

Om målet är att ha ett program (webbapp eller tjänst) som kan köras på flera plattformar som stöds av Docker (Linux och Windows) är det rätta valet .NET 8, eftersom .NET Framework endast stöder Windows.

.NET 8 stöder även macOS som utvecklingsplattform. Men när du distribuerar containrar till en Docker-värd måste den värden (för närvarande) baseras på Linux eller Windows. I en utvecklingsmiljö kan du till exempel använda en virtuell Linux-dator som körs på en Mac.

Visual Studio tillhandahåller en integrerad utvecklingsmiljö (IDE) för Windows och har stöd för Docker-utveckling.

Du kan också använda Visual Studio Code på macOS, Linux och Windows. Visual Studio Code har fullt stöd för .NET 8, inklusive IntelliSense och felsökning. Eftersom VS Code är en lätt redigerare kan du använda den för att utveckla containerbaserade appar på datorn tillsammans med Docker CLI och .NET CLI. Du kan också rikta in dig på .NET 8 med de flesta tredjepartsredigerare som Sublime, Emacs, vi och OmniSharp-projektet med öppen källkod, vilket också ger IntelliSense-stöd.

Förutom IDE:er och redigerare kan du använda .NET CLI för alla plattformar som stöds.

Använda containrar för nya projekt ("green-field")

Containrar används ofta tillsammans med en arkitektur för mikrotjänster, men de kan också användas för att containerisera webbappar eller tjänster som följer ett arkitekturmönster. Du kan använda .NET Framework på Windows-containrar, men modulariteten och den lätta karaktären hos .NET 8 gör det perfekt för containrar och mikrotjänstarkitekturer. När du skapar och distribuerar en container är dess avbildning mycket mindre med .NET 8 än med .NET Framework.

Skapa och distribuera mikrotjänster på containrar

Du kan använda det traditionella .NET Framework för att skapa mikrotjänstbaserade program (utan containrar) med hjälp av vanliga processer. På så sätt är processerna lätta och snabba att starta eftersom .NET Framework redan är installerat och delat mellan processer. Men om du använder containrar baseras avbildningen för det traditionella .NET Framework också på Windows Server Core och det gör den för tung för en metod för mikrotjänster på containrar. Team har dock letat efter möjligheter att förbättra upplevelsen även för .NET Framework-användare. Nyligen har storleken på Windows Server Core-containeravbildningarna minskats till >40 % mindre.

Å andra sidan är .NET 8 den bästa kandidaten om du använder ett mikrotjänstorienterat system som baseras på containrar eftersom .NET 8 är enkelt. Dessutom är dess relaterade containeravbildningar, för antingen Linux eller Windows Nano Server, smala och små, vilket gör containrar lätta och snabba att starta.

En mikrotjänst är avsedd att vara så liten som möjligt: att vara lätt när den snurrar upp, att ha ett litet fotavtryck, att ha en liten begränsad kontext (kontrollera DDD, domändriven design), att representera ett litet område av problem och att kunna starta och stoppa snabbt. För dessa krav vill du använda små och snabbinstansiera containeravbildningar som .NET 8-containeravbildningen.

Med en arkitektur för mikrotjänster kan du också blanda tekniker över en tjänstgräns. Den här metoden möjliggör en gradvis migrering till .NET 8 för nya mikrotjänster som fungerar tillsammans med andra mikrotjänster eller med tjänster som utvecklats med Node.js, Python, Java, GoLang eller andra tekniker.

Distribuera hög densitet i skalbara system

När ditt containerbaserade system behöver bästa möjliga densitet, kornighet och prestanda är .NET och ASP.NET Core dina bästa alternativ. ASP.NET Core är upp till 10 gånger snabbare än ASP.NET i det traditionella .NET Framework, och det leder till andra populära branschtekniker för mikrotjänster, till exempel Java-servletar, Go och Node.js.

Den här metoden är särskilt relevant för mikrotjänstarkitekturer, där du kan ha hundratals mikrotjänster (containrar) igång. Med ASP.NET Core-avbildningar (baserat på .NET-körningen) i Linux eller Windows Nano kan du köra systemet med ett mycket lägre antal servrar eller virtuella datorer, vilket i slutändan sparar kostnader i infrastruktur och värdtjänster.