Wahl zwischen .NET Core und .NET Framework für Server-AppsChoosing between .NET Core and .NET Framework for server apps

Bei der Erstellung von serverseitigen Anwendungen mit .NET werden zwei Implementierungen unterstützt: .NET Framework und .NET Core.There are two supported implementations for building server-side applications with .NET: .NET Framework and .NET Core. Beide nutzen viele gemeinsame Komponenten, und bei beiden stimmt ein Teil des Codes überein.Both share many of the same components and you can share code across the two. Allerdings gibt es auch grundlegende Unterschiede. Daher richtet sich Ihre Entscheidung danach, was Sie erreichen möchten.However, there are fundamental differences between the two and your choice depends on what you want to accomplish. Dieser Artikel stellt Anleitungen dazu bereit, welche Variante in welchen Fällen verwendet werden sollte.This article provides guidance on when to use each.

Verwenden Sie in folgenden Fällen .NET Core für Ihre Serveranwendung:Use .NET Core for your server application when:

  • Es bestehen plattformübergreifende Anforderungen.You have cross-platform needs.
  • Sie möchten Microservices erstellen.You are targeting microservices.
  • Sie verwenden Docker-Container.You are using Docker containers.
  • Sie sind auf skalierbare Hochleistungssysteme angewiesen.You need high-performance and scalable systems.
  • Sie benötigen pro Anwendung verschiedene parallele .NET-Versionen.You need side-by-side .NET versions per application.

Verwenden Sie in folgenden Fällen .NET Framework für Ihre Serveranwendung:Use .NET Framework for your server application when:

  • Sie verwenden für Ihre Anwendung derzeit .NET Framework (empfohlen wird eine Erweiterung anstelle einer Migration).Your app currently uses .NET Framework (recommendation is to extend instead of migrating).
  • Ihre Anwendung verwendet .NET-Bibliotheken von Drittanbietern oder NuGet-Paketen, die für .NET Core nicht verfügbar sind.Your app uses third-party .NET libraries or NuGet packages not available for .NET Core.
  • Ihre Anwendung verwendet .NET-Technologien, die für .NET Core nicht verfügbar sind.Your app uses .NET technologies that aren't available for .NET Core.
  • Ihre Anwendung verwendet eine Plattform, die .NET Core nicht unterstützt.Your app uses a platform that doesn’t support .NET Core.

In welchen Fällen sollte .NET Core verwendet werden?When to choose .NET Core

In den folgenden Abschnitten werden die zuvor genannten Gründe für eine Entscheidung für .NET Core ausführlicher erläutert.The following sections give a more detailed explanation of the previously stated reasons for picking .NET Core.

Plattformübergreifende AnforderungenCross-platform needs

Wenn Ihre Anwendung (Web/Dienst) auf mehreren Plattformen ausgeführt werden muss (Windows, Linux und macOS), verwenden Sie .NET Core.If your application (web/service) needs to run on multiple platforms (Windows, Linux, and macOS), use .NET Core.

.NET Core unterstützt die zuvor genannten Betriebssysteme für Ihre Entwicklungsarbeitsstation..NET Core supports the previously mentioned operating systems as your development workstation. Visual Studio bietet eine Umgebung IDE (Integrated Development) für Windows und Mac OS.Visual Studio provides an Integrated Development Environment (IDE) for Windows and macOS. Sie können auch Visual Studio Code verwenden, das unter macOS, Linux und Windows ausgeführt werden kann.You can also use Visual Studio Code, which runs on macOS, Linux, and Windows. Visual Studio Code unterstützt .NET Core, einschließlich IntelliSense und Debugging.Visual Studio Code supports .NET Core, including IntelliSense and debugging. Die meisten Editors von Drittanbietern, wie etwa Sublime, Emacs und VI, funktionieren mit .NET Core.Most third-party editors, such as Sublime, Emacs, and VI, work with .NET Core. Diese Editors von Drittanbietern rufen IntelliSense mit OmniSharp ab.These third-party editors get editor IntelliSense using Omnisharp. Da Sie die .NET Core-Befehlszeilentools direkt verwenden können, die für alle unterstützten Plattformen verfügbar sind, ist ein Code-Editor überflüssig.You can also avoid any code editor and directly use the .NET Core CLI tools, available for all supported platforms.

MicroservicearchitekturMicroservices architecture

Durch eine Microservicearchitektur ist eine dienstübergreifende Kombination aus Technologien möglich.A microservices architecture allows a mix of technologies across a service boundary. Diese Kombination aus Technologien ermöglicht eine sukzessive Integration von .NET Core für neue Microservices, die mit anderen Microservices oder Diensten funktionieren.This technology mix enables a gradual embrace of .NET Core for new microservices that work with other microservices or services. Sie können z.B. Microservices oder Dienste kombinieren, die mit .NET Framework, Java, Ruby oder einer anderen monolithischen Technologie entwickelt wurden.For example, you can mix microservices or services developed with .NET Framework, Java, Ruby, or other monolithic technologies.

Es stehen viele verschiedene Infrastrukturplattformen zur Verfügung.There are many infrastructure platforms available. Azure Service Fabric wurde für große und komplexe Microservicesysteme entwickelt.Azure Service Fabric is designed for large and complex microservice systems. Azure App Service ist eine gute Wahl bei zustandslosen Microservices.Azure App Service is a good choice for stateless microservices. Auf Docker basierende Alternativen zu Microservices sind – wie im Abschnitt Container erläutert – mit allen Arten von Microserviceimplementierungen kompatibel.Microservices alternatives based on Docker fit any kind of microservices approach, as explained in the Containers section. All diese Plattformen unterstützen .NET Core und eignen sich daher ideal zum Hosten Ihrer Microservices.All these platforms support .NET Core and make them ideal for hosting your microservices.

Weitere Informationen zur Microservicearchitektur finden Sie .NET Microservices. Architecture for Containerized .NET Applications (.NET Microservices: Architektur für .NET-Containeranwendungen).For more information about microservices architecture, see .NET Microservices. Architecture for Containerized .NET Applications.

ContainerContainers

Container werden häufig in Verbindung mit einer Microservicearchitektur verwendet.Containers are commonly used in conjunction with a microservices architecture. Container können auch zur Containerisierung von Web-Apps und -Diensten verwendet werden, die einem Architekturmuster folgen.Containers can also be used to containerize web apps or services that follow any architectural pattern. .NET Framework lässt sich auch für Windows-Container verwenden, allerdings ist .NET Core durch seine Modularität und den einfachen Aufbau besser für Container geeignet..NET Framework can be used on Windows containers, but the modularity and lightweight nature of .NET Core makes it a better choice for containers. Die Imagegröße eines mit .NET Core erstellten und bereitgestellten Containers ist wesentlich kleiner als bei .NET Framework.When creating and deploying a container, the size of its image is much smaller with .NET Core than with .NET Framework. Aufgrund der plattformübergreifenden Struktur können Sie Server-Apps zum Beispiel in Linux-Docker-Containern bereitstellen.Because it's cross-platform, you can deploy server apps to Linux Docker containers, for example.

Docker-Container können in Ihrer Linux- oder Windows-Infrastruktur oder in einem Clouddienst wie Azure Container Service gehostet werden.Docker containers can be hosted in your own Linux or Windows infrastructure, or in a cloud service such as Azure Container Service. Azure Container Service kann containerbasierte Anwendungen in der Cloud verwalten, orchestrieren und skalieren.Azure Container Service can manage, orchestrate, and scale container-based applications in the cloud.

Bedarf an skalierbaren HochleistungssystemenA need for high-performance and scalable systems

Wenn Sie für Ihr System die bestmögliche Leistung und Skalierbarkeit benötigen, sind .NET Core und ASP.NET Core die besten Optionen für Sie.When your system needs the best possible performance and scalability, .NET Core and ASP.NET Core are your best options. Die leistungsstarke Serverlaufzeit für Windows Server und Linux macht .NET zu einem leistungsfähigen Webframework für TechEmpower-Benchmarks.High-performance server runtime for Windows Server and Linux makes .NET a top performing web framework on TechEmpower benchmarks.

Leistung und Skalierbarkeit sind insbesondere für Microservicearchitekturen relevant, in denen Hunderte von Microservices ausgeführt werden können.Performance and scalability are especially relevant for microservices architectures, where hundreds of microservices may be running. Mit ASP.NET Core werden Systeme mit einer deutlich geringeren Zahl an Servern bzw. VMs ausgeführt.With ASP.NET Core, systems run with a much lower number of servers/Virtual Machines (VM). Durch die geringere Zahl an Servern bzw. VMs werden Kosten für die Infrastruktur und das Hosten gespart.The reduced servers/VMs save costs in infrastructure and hosting.

Bedarf an parallel ausführbaren .NET-Versionen pro AnwendungsebeneA need for side by side of .NET versions per application level

Für das Installieren von Anwendungen mit Abhängigkeiten von verschiedenen .NET-Versionen wird .NET Core empfohlen.To install applications with dependencies on different versions of .NET, we recommend .NET Core. .NET Core bietet parallele Installationen verschiedener Versionen der .NET Core-Runtime auf demselben Computer..NET Core offers side-by-side installation of different versions of the .NET Core runtime on the same machine. Diese parallele Installation ermöglicht das Vorhandensein mehrerer Dienste auf demselben Server, wobei jeder seine eigene .NET Core-Version aufweist.This side-by-side installation allows multiple services on the same server, each of them on its own version of .NET Core. Zudem senkt sie Risiken und spart Kosten für Anwendungsupdates und IT-Vorgänge.It also lowers risks and saves money in application upgrades and IT operations.

In welchen Fällen sollte .NET Framework verwendet werden?When to choose .NET Framework

.NET Core bietet große Vorteile für neue Anwendungen und Anwendungsmuster..NET Core offers significant benefits for new applications and application patterns. .NET Framework bleibt aber weiterhin die erste Wahl für viele Szenarios.However, the .NET Framework continues to be the natural choice for many existing scenarios and as such. .NET Framework wird nicht für alle Serveranwendungen durch .NET Core ersetzt.The .NET Framework isn't replaced by .NET Core for all server applications.

Vorhandene .NET Framework-AnwendungenCurrent .NET Framework applications

In den meisten Fällen müssen Sie Ihre vorhandenen Anwendungen nicht zu .NET Core migrieren.In most cases, you don’t need to migrate your existing applications to .NET Core. Stattdessen wird die Verwendung von .NET Core empfohlen, wenn Sie eine vorhandene Anwendung erweitern möchten, z.B. durch Schreiben eines neuen Webdiensts in ASP.NET Core.Instead, a recommended approach is to use .NET Core as you extend an existing application, such as writing a new web service in ASP.NET Core.

Notwendigkeit von .NET-Bibliotheken von Drittanbietern oder NuGet-Paketen, die für .NET Core nicht verfügbar sindA need to use third-party .NET libraries or NuGet packages not available for .NET Core

Aktuell können Sie die schnelle Integration vom .NET Standard in Bibliotheken beobachten.Libraries are quickly embracing .NET Standard. Mit .NET Standard können Sie Code in allen .NET-Implementierungen einschließlich .NET Core freigeben..NET Standard enables sharing code across all .NET implementations including .NET Core. Mit .NET Standard 2.0 ist das sogar noch einfacher:With .NET Standard 2.0, this is even easier:

  • Die API-Oberfläche ist deutlich größer.The API surface became much larger.
  • Der .NET Framework-Kompatibilitätsmodus wurde eingeführt.Introduced a .NET Framework compatibility mode. Mit diesem Kompatibilitätsmodus können .NET Standard- bzw. .NET Core-Projekte auf .NET Framework-Bibliotheken verweisen.This compatibility mode allows .NET Standard/.NET Core projects to reference .NET Framework libraries. Im Blogbeitrag Announcing .NET Standard 2.0 (Ankündigung: .NET Standard 2.0) finden Sie weitere Informationen zum Kompatibilitätsmodus.To learn more about the compatibility mode, see Announcing .NET Standard 2.0.

Sie müssen nur dann .NET Framework verwenden, wenn die Bibliotheken oder NuGet-Pakete Technologien verwenden, die nicht in .NET Standard bzw. .NET Core verfügbar sind.So only in cases where the libraries or NuGet packages use technologies that aren't available in .NET Standard/.NET Core, you need to use the .NET Framework.

Notwendigkeit von .NET-Technologien, die für .NET Core nicht verfügbar sindA need to use .NET technologies not available for .NET Core

Einige .NET Framework-Technologien sind in .NET Core nicht verfügbar.Some .NET Framework technologies aren't available in .NET Core. Möglicherweise werden aber einige in zukünftigen .NET Core-Releases verfügbar gemacht.Some of them might be available in later .NET Core releases. Andere können jedoch für die neuen Anwendungsmuster, auf die .NET Core abzielt, nicht verwendet werden und werden möglicherweise nie verfügbar sein.Others don’t apply to the new application patterns targeted by .NET Core and may never be available. Die folgende Liste enthält die häufigsten Technologien, die von .NET Core nicht unterstützt werden:The following list shows the most common technologies not found in .NET Core:

  • ASP.NET-Web Forms-Anwendungen: ASP.NET-Web Forms ist nur in .NET Framework verfügbar.ASP.NET Web Forms applications: ASP.NET Web Forms are only available in the .NET Framework. ASP.NET Core kann nicht für ASP.NET-Web Forms verwendet werden.ASP.NET Core cannot be used for ASP.NET Web Forms. Eine Integration von ASP.NET-.Web Forms in .NET Core ist nicht geplant.There are no plans to bring ASP.NET Web Forms to .NET Core.

  • ASP.NET Web Pages-Anwendungen: ASP.NET Web Pages ist nicht in ASP.NET Core enthalten.ASP.NET Web Pages applications: ASP.NET Web Pages aren't included in ASP.NET Core. Die Razor-Seiten von ASP.NET Core ähneln Web Pages.ASP.NET Core Razor Pages have many similarities with Web Pages.

  • Implementierung von ASP.NET SignalR-Server/-Client.ASP.NET SignalR server/client implementation. Aktuell ist ASP.NET SignalR für ASP.NET Core nicht verfügbar (weder Client noch Server).Currently, ASP.NET SignalR isn't available for ASP.NET Core (not client or server). ASP.NET Core SignalR ist für ASP.NET Core 2.1 geplant.ASP.NET Core SignalR is scheduled for ASP.NET Core 2.1. Weitere Informationen finden Sie unter ASP.NET Core Schedule and Roadmap (Zeitplan und Meilensteinplan für ASP.NET Core).See the ASP.NET Core Schedule and Roadmap. Die Vorschau ist für die GitHub-Repositorys sowohl für die Serverseite als auch für die Clientbibliotheken verfügbar.Preview state is available at the Server-side and Client Library GitHub repositories.

  • Implementierung von WCF-Diensten.WCF services implementation. Auch wenn WCF-Dienste über eine WCF-Clientbibliothek von .NET Core genutzt werden, ist die WCF-Serverimplementierung aktuell nur in .NET Framework verfügbar.Even when there’s a WCF-Client library to consume WCF services from .NET Core, WCF server implementation is currently only available in the .NET Framework. Dieses Szenario ist nicht Bestandteil der derzeitigen Pläne für .NET Core, wird jedoch für die Zukunft in Betracht gezogen.This scenario is not part of the current plan for .NET Core but it’s being considered for the future.

  • Workflowbezogene Dienste: Windows Workflow Foundation (WF), Workflow Services (WCF + WF in einem einzigen Dienst) und WCF Data Services (zuvor bekannt als „ADO.NET Data Services“) sind nur in .NET Framework verfügbar.Workflow-related services: Windows Workflow Foundation (WF), Workflow Services (WCF + WF in a single service) and WCF Data Services (formerly known as "ADO.NET Data Services") are only available in the .NET Framework. Eine Integration von WF/WCF+WF/WCF Data Services in .NET Core ist nicht geplant.There are no plans to bring WF/WCF+WF/WCF Data Services to .NET Core.

  • Windows Presentation Foundation (WPF) und Windows Forms: WPF- und Windows Forms-Anwendungen sind nur in .NET Framework verfügbar.Windows Presentation Foundation (WPF) and Windows Forms: WPF and Windows Forms applications are only available in the .NET Framework. Es ist nicht geplant, diese auf .NET Core zu übertragen.There are no plans to port them to .NET Core.

  • Sprachunterstützung: Visual Basic und F# werden aktuell in .NET Core unterstützt, allerdings nicht für alle Projekttypen.Language support: Visual Basic and F# are currently supported in .NET Core, but not for all project types. Eine Liste der unterstützten Projektvorlagen finden Sie im Abschnitt Vorlagenoptionen für dotnet new.For a list of supported project templates, see Template options for dotnet new.

Zusätzlich zum offiziellen Meilensteinplan werden auch andere Frameworks in .NET Core portiert.In addition to the official roadmap, there are other frameworks to be ported to .NET Core. Eine vollständige Liste finden Sie bei den CoreFX-Problemen, die als port-to-core (Port auf Core) gekennzeichnet wurden.For a full list, see the CoreFX issues marked as port-to-core. Diese Liste stellt jedoch nicht die Komponenten dar, die Microsoft auch tatsächlich in .NET Core integrieren wird.This list doesn’t represent a commitment from Microsoft to bring those components to .NET Core. Sie spiegelt lediglich die Wünsche der Community wider.They're simply capturing the desire from the community to do so. Wenn Ihnen eine als port-to-core gekennzeichnete Komponente als wichtig erscheint, beteiligen Sie sich an der Diskussion auf GitHub.If you care about any of the components marked as port-to-core, participate in the discussions on GitHub. Wenn Ihrer Ansicht nach noch etwas fehlt, erstellen Sie im CoreFX-Repository ein neues Problem.And if you think something is missing, file a new issue in the CoreFX repository.

Notwendigkeit einer Plattform, die .NET Core nicht unterstütztA need to use a platform that doesn’t support .NET Core

Einige Plattformen von Microsoft oder Drittanbietern unterstützen .NET Core nicht.Some Microsoft or third-party platforms don’t support .NET Core. Zum Beispiel wird für einige Azure-Dienste, wie z.B. Service Fabric Stateful Reliable Services und Service Fabric Reliable Actors, .NET Framework benötigt.For example, some Azure services such as Service Fabric Stateful Reliable Services and Service Fabric Reliable Actors require .NET Framework. Einige andere Dienste stellen ein SDK bereit, das noch nicht für die Nutzung in .NET Core verfügbar ist.Some other services provide an SDK not yet available for consumption on .NET Core. Dies ist allerdings nur vorübergehend der Fall, weil .NET Core von sämtlichen Azure-Diensten verwendet wird.This is a transitional circumstance, as all of Azure services use .NET Core. In der Zwischenzeit können Sie anstelle des Client-SDKs stets die entsprechende REST-API verwenden.In the meantime, you can always use the equivalent REST API instead of the client SDK.

Siehe auchSee also

Wählen Sie zwischen ASP.NET und ASP.NET CoreChoose between ASP.NET and ASP.NET Core
Leitfaden für .NET Core.NET Core Guide
Portieren von .NET Framework zu .NET CorePorting from .NET Framework to .NET Core
Leitfaden zu .NET Framework in Docker.NET Framework on Docker Guide
.NET-Komponenten – Übersicht.NET Components Overview
.NET Microservices. Architecture for Containerized .NET Applications (.NET Microservices: Architektur für .NET-Containeranwendungen).NET Microservices. Architecture for Containerized .NET Applications