Wann sollte .NET Framework für Docker-Container verwendet werden?

Tipp

Diese Inhalte sind ein Auszug aus dem eBook „.NET Microservices Architecture for Containerized .NET Applications“, verfügbar unter .NET Docs oder als kostenlos herunterladbare PDF-Datei, die offline gelesen werden kann.

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

Während .NET 8 erhebliche Vorteile für neue Anwendungen und Anwendungsmuster bietet, ist .NET Framework nach wie vor eine gute Wahl für viele bestehende Szenarios.

Direktes Migrieren vorhandener Anwendungen zu einem Windows Server-Container

Mithilfe von Docker-Containern können Sie die Bereitstellung vereinfachen, auch wenn Sie keine Microservices erstellen. Wenn Sie beispielsweise den DevOps-Workflow mit Docker verbessern möchten, bieten Container besser isolierte Testumgebungen und können Bereitstellungsprobleme lösen, die durch fehlende Abhängigkeiten verursacht werden, wenn Sie in eine Produktionsumgebung wechseln. Wenn Sie eine monolithische Anwendung bereitstellen, ist es in solchen Fällen sinnvoll, Docker- und Windows-Container für die aktuellen .NET Framework-Anwendungen zu verwenden.

In diesem Szenario müssen Sie Ihre vorhandenen Anwendungen in den meisten Fällen nicht zu .NET 8 migrieren, sondern können einfach Docker-Container verwenden, die das traditionelle .NET Framework enthalten. Empfohlen wird jedoch, .NET 8 zu verwenden, wenn Sie eine vorhandene Anwendung erweitern möchten, z. B. durch Schreiben eines neuen Diensts in ASP.NET Core.

Verwenden von nicht für .NET 8 verfügbaren .NET-Bibliotheken von Drittanbietern oder NuGet-Paketen

.NET Standard kommt in Drittanbieterbibliotheken immer häufiger zum Einsatz und ermöglicht die Codefreigabe in allen .NET-Varianten, einschließlich .NET 8. Mit .NET-Standard 2.0 und höher ist die API-Schnittstellenkompatibilität zwischen verschiedenen Frameworks deutlich größer geworden. Darüber hinaus können .NET Core 2.x- und neuere Anwendungen auch direkt auf vorhandene .NET Framework-Bibliotheken verweisen (weitere Informationen finden Sie unter .NET Framework 4.6.1-Unterstützung von .NET Standard 2.0).

Zudem erweitert das Windows Compatibility Pack die unter Windows für .NET Standard 2.0 verfügbare API-Oberfläche. Mit diesem Paket kann der größte Teil des vorhandenen Codes mit nur geringen oder ganz ohne Änderungen für .NET Standard 2.x neu kompiliert und unter Windows ausgeführt werden.

Trotz dieser außergewöhnlichen Fortschritte seit .NET Standard 2.0 und .NET Core 2.1 und höher können jedoch weiterhin Fälle auftreten, in denen bestimmte NuGet-Pakete nicht ohne Windows ausgeführt werden können und .NET Core und höher nicht unterstützen. Wenn diese Pakete von entscheidender Bedeutung für die Anwendung sind, müssen Sie .NET Framework in Windows-Containern verwenden.

Verwenden von nicht für .NET 8 verfügbaren .NET-Technologien

Einige .NET Framework-Technologien sind in .NET 8 nicht verfügbar. Einige davon werden möglicherweise in späteren Versionen verfügbar sein, aber andere passen nicht zu den neuen Anwendungsmustern für .NET Core und werden möglicherweise gar nicht verfügbar sein.

In der folgenden Liste ist der Großteil der Technologien aufgeführt, die in .NET 8 nicht verfügbar sind:

  • ASP.NET Web Forms: Diese Technologie ist nur in .NET Framework verfügbar. Eine Integration von ASP.NET Web Forms in .NET 6 und höher ist zurzeit nicht geplant.

  • Workflow-bezogene Dienste: Windows Workflow Foundation (WF), die Workflow-Dienste (WCF + WF in einem einzigen Dienst) und WCF Data Services (früher ADO.NET Data Services) sind nur in .NET Framework verfügbar. Es ist zurzeit nicht vorgesehen, diese in .NET 8 zu integrieren.

Zusätzlich zu den in der offiziellen Roadmap für .NET aufgeführten Technologien werden möglicherweise andere Features zur neuen vereinheitlichten .NET-Plattform portiert. Sie können erwägen, sich an den Diskussionen auf GitHub zu beteiligen, um Ihre Meinung zu äußern. Wenn Ihrer Ansicht nach noch etwas fehlt, können Sie dies im GitHub-Repository dotnet/runtime melden.

Verwenden einer Plattform oder API ohne Unterstützung für .NET 8

Einige Plattformen von Microsoft und Drittanbietern unterstützen .NET 8 nicht. Einige Azure-Dienste stellen beispielsweise ein SDK bereit, das noch nicht für die Nutzung in .NET 8 verfügbar ist. Die meisten Azure SDKs sollten irgendwann zu .NET 8 bzw. .NET Standard portiert werden, aber bei einigen könnte das aus verschiedenen Gründen nicht möglich sein. Sie können die verfügbaren Azure SDKs auf der Seite Azure SDK Latest Releases (Neueste Azure SDK-Versionen) einsehen.

Wenn eine der Plattformen oder einer der Dienste in Azure .NET 8 weiterhin nicht mit der Client-API unterstützt, können Sie in der Zwischenzeit die entsprechende REST-API des Azure-Diensts oder das Client SDK des .NET Framework verwenden.

Portieren einer vorhandenen ASP.NET-Anwendung zu .NET 8

.NET Core ist ein großer Schritt nach vorn gegenüber .NET Framework. Es bietet zahlreiche Vorteile gegenüber .NET Framework: angefangen bei der Produktivität bis hin zur Leistung, von plattformübergreifender Unterstützung bis hin zur Zufriedenheit der Entwickler.

Zusätzliche Ressourcen