Kiedy należy wybrać oprogramowanie .NET na potrzeby kontenerów Docker
Napiwek
Ta zawartość jest fragmentem książki eBook, architektury mikrousług platformy .NET dla konteneryzowanych aplikacji platformy .NET dostępnych na platformie .NET Docs lub jako bezpłatnego pliku PDF, który można odczytać w trybie offline.
Modułowość i lekki charakter platformy .NET 8 doskonale nadaje się do kontenerów. Podczas wdrażania i uruchamiania kontenera jego obraz jest znacznie mniejszy z platformą .NET 8 niż w programie .NET Framework. W przeciwieństwie do używania programu .NET Framework dla kontenera należy zastosować obraz na obrazie Windows Server Core, który jest znacznie cięższy niż obrazy systemu Windows Nano Server lub Linux używane na platformie .NET 8.
Ponadto platforma .NET 8 jest międzyplatformowa, dzięki czemu można wdrażać aplikacje serwera przy użyciu obrazów kontenerów systemu Linux lub Windows. Jeśli jednak używasz tradycyjnego programu .NET Framework, możesz wdrażać obrazy tylko na podstawie systemu Windows Server Core.
Poniżej przedstawiono bardziej szczegółowe wyjaśnienie, dlaczego warto wybrać platformę .NET 8.
Tworzenie i wdrażanie międzyplatformowe
Oczywiście, jeśli twoim celem jest posiadanie aplikacji (aplikacji internetowej lub usługi), która może działać na wielu platformach obsługiwanych przez platformę Docker (Linux i Windows), właściwym wyborem jest platforma .NET 8, ponieważ program .NET Framework obsługuje tylko system Windows.
Platforma .NET 8 obsługuje również system macOS jako platformę deweloperów. Jednak podczas wdrażania kontenerów na hoście platformy Docker ten host musi (obecnie) być oparty na systemie Linux lub Windows. Na przykład w środowisku projektowym można użyć maszyny wirtualnej z systemem Linux uruchomionej na komputerze Mac.
Program Visual Studio udostępnia zintegrowane środowisko projektowe (IDE) dla systemu Windows i obsługuje programowanie na platformie Docker.
Można również używać programu Visual Studio Code w systemach macOS, Linux i Windows. Program Visual Studio Code w pełni obsługuje platformę .NET 8, w tym funkcję IntelliSense i debugowanie. Ponieważ program VS Code jest uproszczonym edytorem, można go użyć do tworzenia konteneryzowanych aplikacji na maszynie w połączeniu z interfejsem wiersza polecenia platformy Docker i interfejsem wiersza polecenia platformy .NET. Możesz również kierować platformę .NET 8 do większości edytorów innych firm, takich jak Sublime, Emacs, vi i projekt OmniSharp typu open source, który zapewnia również obsługę funkcji IntelliSense.
Oprócz środowisk IDE i edytorów można użyć interfejsu wiersza polecenia platformy .NET dla wszystkich obsługiwanych platform.
Używanie kontenerów dla nowych projektów ("green-field")
Kontenery są często używane w połączeniu z architekturą mikrousług, chociaż mogą być również używane do konteneryzowania aplikacji internetowych lub usług, które są zgodne z dowolnym wzorcem architektury. Program .NET Framework można używać w kontenerach systemu Windows, ale modułowość i lekki charakter platformy .NET 8 doskonale nadaje się do obsługi kontenerów i architektur mikrousług. Podczas tworzenia i wdrażania kontenera jego obraz jest znacznie mniejszy z platformą .NET 8 niż w programie .NET Framework.
Tworzenie i wdrażanie mikrousług w kontenerach
Możesz użyć tradycyjnego programu .NET Framework do tworzenia aplikacji opartych na mikrousługach (bez kontenerów) przy użyciu zwykłych procesów. W ten sposób, ponieważ program .NET Framework jest już zainstalowany i współużytkowany w procesach, procesy są lekkie i szybkie do uruchomienia. Jeśli jednak używasz kontenerów, obraz tradycyjnego programu .NET Framework jest również oparty na systemie Windows Server Core i sprawia, że jest zbyt duży w przypadku podejścia mikrousług opartych na kontenerach. Jednak zespoły szukały możliwości poprawy środowiska dla użytkowników programu .NET Framework. Ostatnio rozmiar obrazów kontenerów systemu Windows Server Core został zmniejszony do >40% mniejszy.
Z drugiej strony platforma .NET 8 jest najlepszym kandydatem, jeśli korzystasz z systemu zorientowanego na mikrousługi opartego na kontenerach, ponieważ platforma .NET 8 jest uproszczona. Ponadto powiązane z nią obrazy kontenerów dla systemu Linux lub Windows Nano Server są chude i małe, dzięki czemu kontenery są lekkie i szybkie do uruchomienia.
Mikrousługę ma być tak mała, jak to możliwe: aby być lekkim podczas uruchamiania, mieć niewielki ślad, aby mieć mały kontekst ograniczony (sprawdź DDD, projekt oparty na domenie), aby reprezentować niewielki obszar problemów i umożliwić szybkie uruchamianie i zatrzymywanie. W przypadku tych wymagań należy użyć małych i szybkich wystąpień obrazów kontenerów, takich jak obraz kontenera platformy .NET 8.
Architektura mikrousług umożliwia również mieszanie technologii między granicą usługi. Takie podejście umożliwia stopniową migrację do platformy .NET 8 dla nowych mikrousług, które działają w połączeniu z innymi mikrousługami lub usługami opracowanymi za pomocą Node.js, Python, Java, GoLang lub innych technologii.
Wdrażanie wysokiej gęstości w skalowalnych systemach
Jeśli system oparty na kontenerach potrzebuje najlepszej możliwej gęstości, stopnia szczegółowości i wydajności, platforma .NET i ASP.NET Core to najlepsze opcje. ASP.NET Core jest do 10 razy szybszy niż ASP.NET w tradycyjnym programie .NET Framework i prowadzi do innych popularnych technologii branżowych dla mikrousług, takich jak serwlety Java, Go i Node.js.
Takie podejście jest szczególnie istotne w przypadku architektur mikrousług, w których mogą być uruchomione setki mikrousług (kontenerów). W przypadku obrazów platformy ASP.NET Core (opartych na środowisku uruchomieniowym platformy .NET) w systemie Linux lub Windows Nano można uruchomić system z znacznie mniejszą liczbą serwerów lub maszyn wirtualnych, a ostatecznie obniżyć koszty infrastruktury i hostingu.