Modernisieren vorhandener .NET-Anwendungen mit Azure Cloud und Windows-Containern (2. Auflage)Modernize existing .NET applications with Azure cloud and Windows Containers (2nd edition)

Titelbild des Leitfadens zum Modernisieren von .NET-Anwendungen.

VERÖFFENTLICHT VONPUBLISHED BY
Microsoft Press und Microsoft DevDivMicrosoft Press and Microsoft DevDiv
Geschäftsbereiche der Microsoft CorporationDivisions of Microsoft Corporation
One Microsoft WayOne Microsoft Way
Redmond, Washington 98052-6399Redmond, Washington 98052-6399

Copyright © 2018 by Microsoft CorporationCopyright © 2018 by Microsoft Corporation

Alle Rechte vorbehalten.All rights reserved. Die Inhalte dieser Veröffentlichung dürfen in keiner Form und für keinen Zweck ohne die schriftliche Genehmigung des Herausgebers reproduziert werden.No part of the contents of this book may be reproduced in any form or by any means without the written permission of the publisher.

Diese Veröffentlichung ist kostenlos in Form eines elektronischen Buchs (E-Book) über mehrere Kanäle bei Microsoft verfügbar, z.B. über https://dot.net/architecture.This book is available for free in the form of an electronic book (e-book) available through multiple channels at Microsoft such as https://dot.net/architecture.

Wenn Sie Fragen im Zusammenhang mit dieser Veröffentlichung haben, senden Sie eine E-Mail an dotnet-architecture-ebooks-feedback@service.microsoft.com.If you have questions related to this book, email at dotnet-architecture-ebooks-feedback@service.microsoft.com

Dieses Buch wird unverändert bereitgestellt und drückt die Ansichten und Meinungen des Autors aus.This book is provided "as-is" and expresses the author's views and opinions. Die Ansichten, Meinungen und Informationen, die in diesem Buch zum Ausdruck gebracht werden, einschließlich URLs und anderer Verweise auf Internetwebsites, können ohne vorherige Ankündigung geändert werden.The views, opinions, and information expressed in this book, including URL and other Internet website references, may change without notice.

Einige der hier dargestellten Beispiele dienen nur zu Illustrationszwecken und sind fiktiv.Some examples depicted herein are provided for illustration only and are fictitious. Keinerlei Zuordnung oder Verbindung zu realen Gegebenheiten ist beabsichtigt oder sollte gefolgert werden.No real association or connection is intended or should be inferred.

Microsoft und die auf der Webseite „Marken“ unter https://www.microsoft.com aufgelisteten Marken sind Marken der Microsoft-Unternehmensgruppe.Microsoft and the trademarks listed at https://www.microsoft.com on the "Trademarks" webpage are trademarks of the Microsoft group of companies. Alle anderen Marken sind Eigentum der jeweiligen Besitzer.All other marks are property of their respective owners.

Autor:Author:

Cesar de la Torre, leitender PM, .NET-Produktteam, Microsoft Corp.Cesar de la Torre, Sr. PM, .NET Product Team, Microsoft Corp.

Teilnehmer und Prüfer:Participants and reviewers:

Scott Hunter, Partner Director von PM, .NET-Team, MicrosoftScott Hunter, Partner Director PM, .NET team, Microsoft
Paul Yuknewicz, Principal PM Manager, Visual Studio-Tools-Team, MicrosoftPaul Yuknewicz, Principal PM Manager, Visual Studio Tools team, Microsoft
Lisa Guthrie, leitende PM, Visual Studio-Tools-Team, MicrosoftLisa Guthrie, Sr. PM, Visual Studio Tools team, Microsoft
Ankit Asthana, leitender PM-Manager, .NET-Team, MicrosoftAnkit Asthana, Principal PM Manager, .NET team, Microsoft
Unai Zorrilla, leitender Entwickler, einfache KonzepteUnai Zorrilla, Developer Lead, Plain Concepts
Javier Valero, Chief Operating Officer bei Grupo SolutioJavier Valero, Chief Operating Officer at Grupo Solutio

EinführungIntroduction

Wenn Sie sich entscheiden, Ihre Webanwendungen oder -dienste zu modernisieren und in die Cloud zu verschieben, müssen Sie Ihre Anwendungen nicht zwangsläufig vollständig neu strukturieren.When you decide to modernize your web applications or services and move them to the cloud, you don't necessarily have to fully rearchitect your apps. Die Neustrukturierung einer Anwendung mithilfe eines fortschrittlichen Ansatzes wie Microservices ist aus Kosten- und Zeitgründen nicht immer eine Option.Rearchitecting an application by using an advanced approach like microservices isn't always an option because of cost and time restraints. Abhängig von der Art der Anwendung kann es auch sein, dass eine Neustrukturierung einer App nicht notwendig ist.Depending on the type of application, rearchitecting an app also might not be necessary. Um die Kosteneffizienz der Cloudmigrationsstrategie Ihres Unternehmens zu optimieren, ist es wichtig, die Bedürfnisse Ihres Unternehmens und die Anforderungen Ihrer Apps zu berücksichtigen.To optimize the cost-effectiveness of your organization's cloud migration strategy, it's important to consider the needs of your business and requirements of your apps. Sie müssen Folgendes ermitteln:You'll need to determine:

  • Welche Apps erfordern eine Transformation oder Neustrukturierung?Which apps require a transformation or rearchitecting.

  • Welche Apps müssen nur teilweise modernisiert werden?Which apps need to be only partially modernized.

  • Welche Apps können direkt in die Cloud übertragen und verschoben werden?Which apps you can "lift and shift" directly to the cloud.

Über diesen LeitfadenAbout this guide

Dieser Leitfaden konzentriert sich in erster Linie auf die anfängliche Modernisierung von vorhandenen Microsoft .NET Framework-Webanwendungen oder dienstorientierten Anwendungen, d.h. die Aktion, eine Workload in eine neuere oder modernere Umgebung zu verschieben, ohne den Code und die grundlegende Architektur der Anwendung wesentlich zu verändern.This guide focuses primarily on initial modernization of existing Microsoft .NET Framework web or service-oriented applications, meaning the action of moving a workload to a newer or more modern environment without significantly altering the application's code and basic architecture.

Dieser Leitfaden hebt auch die Vorteile hervor, die sich aus der Verlagerung Ihrer Anwendungen in die Cloud und der teilweisen Modernisierung von Anwendungen durch die Verwendung einer Reihe spezifischer neuer Technologien und Ansätze ergeben, etwa Windows-Container und verwandte Computeplattformen in Azure, die Windows-Container unterstützen.This guide also highlights the benefits of moving your apps to the cloud and partially modernizing apps by using a specific set of new technologies and approaches, like Windows Containers and related compute-platforms in Azure supporting Windows Containers.

Pfad in die Cloud für vorhandene .NET-AnwendungenPath to the cloud for existing .NET applications

Unternehmen entscheiden sich in der Regel für den Wechsel in die Cloud, um die Agilität und Geschwindigkeit zu erreichen, die sie für ihre Anwendungen erzielen können.Organizations typically choose to move to the cloud for the agility and speed they can get for their applications. Sie können Tausende von Servern (virtuellen Computern) in der Cloud innerhalb von Minuten einrichten, verglichen mit den Wochen, die normalerweise für die Einrichtung von lokalen Servern benötigt werden.You can set up thousands of servers (VMs) in the cloud in minutes, compared to the weeks it typically takes to set up on-premises servers.

Es gibt keine einheitliche, standardisierte Strategie für die Migration von Anwendungen in die Cloud.There isn't a single, one-size-fits-all strategy for migrating applications to the cloud. Welche Migrationsstrategie für Sie die richtige ist, hängt von den Bedürfnissen und Prioritäten Ihres Unternehmens und der Art der Anwendungen ab, die Sie migrieren.The right migration strategy for you will depend on your organization's needs and priorities, and the kind of applications you are migrating. Nicht alle Anwendungen rechtfertigen die Investition in einen Umstieg auf ein PaaS-Modell (Platform-as-a-Service) oder in die Entwicklung eines cloudnativen Anwendungsmodells.Not all applications warrant the investment of moving to a platform as a service (PaaS) model or developing a cloud-native application model. In vielen Fällen können Sie basierend auf Ihren Geschäftsanforderungen einen schrittweisen oder inkrementellen Ansatz wählen, um Ihre Ressourcen in die Cloud zu verschieben.In many cases, you can take a phased or incremental approach to invest in moving your assets to the cloud, based on your business needs.

Für moderne Anwendungen mit der besten langfristigen Agilität und dem besten Wert für die Organisation können Sie von einer Investition in cloudnative Anwendungsarchitekturen profitieren.For modern applications with the best long-term agility and value for the organization, you might benefit from investing in cloud-native application architectures. Bei Anwendungen, die bereits vorhandene oder Legacyressourcen sind, kommt es jedoch darauf an, nur minimalen Zeit- und Kostenaufwand zu betreiben (keine Neustrukturierung oder Codeänderungen), um sie in die Cloud zu verschieben, um signifikante Vorteile zu erzielen.However, for applications that are existing or legacy assets, the key is to spend minimal time and money (no rearchitecting or code changes) while moving them to the cloud, to realize significant benefits.

Abbildung 1-1 zeigt die möglichen Pfade, die Sie einschlagen können, wenn Sie vorhandene .NET-Anwendungen in inkrementellen Phasen in die Cloud verschieben.Figure 1-1 shows the possible paths you can take when you move existing .NET applications to the cloud in incremental phases.

 Modernisierungspfade für vorhandene .NET-Anwendungen und -Dienste

(Abbildung 1-1) .Figure 1-1. Modernisierungspfade für vorhandene .NET-Anwendungen und -DiensteModernization paths for existing .NET applications and services

Jeder Migrationsansatz weist unterschiedliche Vorteile und Gründe für seine Anwendung auf.Each migration approach has different benefits and reasons for using it. Sie können einen einzelnen Ansatz wählen, wenn Sie Anwendungen in die Cloud migrieren, oder bestimmte Komponenten aus mehreren Ansätzen auswählen.You can choose a single approach when you migrate apps to the cloud, or choose certain components from multiple approaches. Einzelne Anwendungen sind nicht auf einen Ansatz oder Reifezustand beschränkt.Individual applications aren't limited to a single approach or maturity state. Ein allgemeiner Hybridansatz würde beispielsweise bestimmte lokale Komponenten und andere Komponenten in der Cloud aufweisen.For instance, a common hybrid approach would have certain on-premises components plus other components in the cloud.

Die Definition und kurze Erklärung für jede Anwendungsreifestufe sind die folgenden:The definition and short explanation for each application maturity level are the following:

Stufe 1: Bereit für Cloudinfrastruktur: Bei diesem Migrationsansatz werden Ihre aktuellen lokalen Anwendungen einfach neu gehostet oder zu einer IaaS-Plattform (Infrastructure-as-a-Service) migriert.Level 1: Cloud Infrastructure-Ready applications: In this migration approach, you simply migrate or rehost your current on-premises applications to an infrastructure as a service (IaaS) platform. Ihre Apps weisen fast die gleiche Zusammensetzung wie zuvor auf, aber nun stellen Sie sie auf virtuellen Computern in der Cloud bereit.Your apps have almost the same composition as before, but now you deploy them to VMs in the cloud. Dieser einfache Migrationstyp wird in der Branche als „Lift & Shift“ (übertragen und verschieben) bezeichnet.This simple type of migration is typically known in the industry as "Lift & Shift."

Stufe 2: Cloudoptimierte Anwendungen: Auf dieser Stufe und dennoch ohne Neustrukturierung oder Änderung von signifikantem Code können Sie zusätzliche Vorteile aus der Ausführung Ihrer App in der Cloud mit modernen Technologien wie Containern und zusätzlichen in der Cloud verwalteten Diensten ziehen.Level 2: Cloud Optimized applications: At this level and still without rearchitecting or altering significant code, you can gain additional benefits from running your app in the cloud with modern technologies like containers and additional cloud-managed services. Sie verbessern die Agilität Ihrer Anwendungen, um eine schnellere Bereitstellung leisten zu können, indem Sie Ihre DevOps-Prozesse (Enterprise Development Operations) verfeinern.You improve the agility of your applications to ship faster by refining your enterprise development operations (DevOps) processes. Dies erreichen Sie durch den Einsatz von Technologien wie Windows-Containern, die auf der Docker-Engine basieren.You achieve this by using technologies like Windows Containers, which is based on Docker Engine. Container beseitigen die Reibung, die durch Anwendungsabhängigkeiten verursacht wird, wenn die Bereitstellung in mehreren Stufen erfolgt.Containers remove the friction that’s caused by application dependencies when you deploy in multiple stages. In diesem Reifestufenmodell können Sie Container unter IaaS oder PaaS bereitstellen und gleichzeitig zusätzliche in der Cloud verwaltete Dienste für Datenbanken, Cache-as-a-Service, Überwachung und Pipelines für Continuous Integration/Continuous Deployment (CI/CD) nutzen.In this maturity model, you can deploy containers on IaaS or PaaS while using additional cloud-managed services related to databases, cache as a service, monitoring, and continuous integration/continuous deployment (CI/CD) pipelines.

Die dritte Reifestufe ist das ultimative Ziel in der Cloud, aber sie ist für viele Apps optional und stellt nicht der Hauptschwerpunkt dieses Leitfadens dar:The third level of maturity is the ultimate goal in the cloud, but it's optional for many apps and not the main focus of this guide:

Stufe 3: Cloudnative Anwendungen: Dieser Migrationsansatz wird typischerweise von den geschäftlichen Erfordernissen bestimmt und zielt auf die Modernisierung Ihrer unternehmenskritischen Anwendungen ab.Level 3: Cloud-Native applications: This migration approach typically is driven by business need and targets modernizing your mission-critical applications. Auf dieser Stufe verwenden Sie PaaS-Dienste, um Ihre Apps auf PaaS-Computeplattformen zu verschieben.At this level, you use PaaS services to move your apps to PaaS computing platforms. Sie implementieren cloudnative Anwendungen und Microservicesarchitekturen, um Anwendungen mit langfristiger Agilität zu entwickeln und neue Grenzen für die Skalierung zu entdecken.You implement cloud-native applications and microservices architecture to evolve applications with long-term agility, and to scale to new limits. Diese Art der Modernisierung erfordert in der Regel eine coudspezifische Architektur.This type of modernization usually requires architecting specifically for the cloud. Häufig muss neuer Code geschrieben werden, insbesondere, wenn der Übergang auf cloudnative Anwendungs- und auf Microservices basierende Modelle erfolgt.New code often must be written, especially when you move to cloud-native application and microservice-based models. Dieser Ansatz kann Ihnen dabei helfen, Vorteile zu erzielen, die in Ihrer monolithischen und lokalen Anwendungsumgebung nur schwer zu erreichen sind.This approach can help you gain benefits that are difficult to achieve in your monolithic and on-premises application environment.

Tabelle 1-1 beschreibt die wichtigsten Vorteile und Gründe für die Wahl der einzelnen Migrations- oder Modernisierungsansätze.Table 1-1 describes the main benefits of and reasons for choosing each migration or modernization approach.

Bereit für CloudinfrastrukturCloud Infrastructure-Ready
Übertragen und verschiebenLift and shift
CloudoptimiertCloud-Optimized
ModernisierungModernize
CloudnativCloud-Native
Modernisieren, Neustrukturieren und UmschreibenModernize, rearchitect and rewrite
Computeziel der AnwendungApplication's compute target
Auf virtuellen Computern in Azure bereitgestellte AnwendungenApplications deployed to VMs in Azure Monolithische oder n-schichtige Apps, die in Azure App Service bereitgestellt werden, Azure Container Instance (ACI), VMs mit Containern oder AKS (Azure Kubernetes Service)Monolithic or N-Tier apps deployed to Azure App Service, Azure Container Instance (ACI), VMs with containers, or AKS (Azure Kubernetes Service) Containerisierte Microservices in Azure Kubernetes Service (AKS) und/oder serverlose Microservices, die auf Azure Functions basieren.Containerized microservices on Azure Kubernetes Service (AKS) and/or serverless microservices based on Azure Functions.
DatenzielData target
SQL- oder eine beliebige relationale Datenbank auf einem virtuellen ComputerSQL or any relational database on a VM Verwaltete Azure SQL-Datenbank-Instanz oder eine andere verwaltete Datenbank in der Cloud.Azure SQL Database Managed Instance or another managed database in the cloud. Differenzierte Datenbanken pro Microservice, basierend auf Azure SQL-Datenbank, Azure Cosmos DB oder einer anderen verwalteten Datenbank in der CloudFined-grain databases per microservice, based on Azure SQL Database, Azure Cosmos DB, or another managed database in the cloud
VorteileAdvantages
  • Keine Neustrukturierung, kein neuer CodeNo rearchitecting, no new code
  • Geringster Aufwand für eine schnelle Migration.Least effort for quick migration
  • Kleinster gemeinsamen Nenner, der in Azure unterstützt wird.Least-common denominator supported in Azure
  • Grundlegende Verfügbarkeitsgarantien.Basic availability guarantees
  • Nach dem Wechsel in die Cloud ist es einfacher, noch mehr zu modernisieren.After moving to the cloud, it's easier to modernize even more
  • Keine NeustrukturierungNo rearchitecting
  • Minimale Code-/KonfigurationsänderungenMinimal code/config changes
  • Verbesserte Bereitstellung und DevOps-Agilität beim Release aufgrund von Containern.Improved deployment and DevOps agility to release because of containers
  • Höhere Dichte und niedrigere Bereitstellungskosten.Increased density and lower deployment costs
  • Portabilität von Apps und Abhängigkeiten.Portability of apps and dependencies
  • Flexibilität der Hostziele: Paas-Ansätze oder IaaSFlexibility of host targets: PaaS approaches or IaaS
  • Architektur für die Cloud: Sie profitieren von den besten Vorteilen der Cloud, es ist aber neuer Code erforderlich.Architect for the cloud, you get the best benefits from the cloud but new code is needed
  • Cloudnative Microservicesansätze.Microservices cloud-native approaches
  • Moderne unternehmenskritische Anwendungen, cloudrobust, hyperskalierbarModern mission-critical applications, cloud-resilient hyper-scalable
  • Vollständig verwaltete Dienste.Fully managed services
  • Optimiert für die Skalierung.Optimized for scale
  • Optimiert für autonome Agilität durch Subsysteme.Optimized for autonomous agility by subsystem
  • Basiert auf Bereitstellung und DevOps.Built on deployment and DevOps
  • HerausforderungenChallenges
  • Geringerer Cloudwert, abgesehen von der Verschiebung der Betriebskosten oder der Schließung von Datencentern.Smaller cloud value, other than shift in operating expense or closing datacenters
  • Sehr wenig wird verwaltet: Kein Patchen von Betriebssystemen oder Middleware, ggf. werden Infrastrukturlösungen wie Terraform, Spinnaker oder Puppet verwendet.Little is managed: No OS or middleware patching; might use infrastructure solutions, like Terraform, Spinnaker, or Puppet
  • Containerisierung ist ein zusätzlicher erforderlicher Schritt in der Lernkurve für Entwickler und den IT-Betrieb.Containerizing is an additional step in the learning curve for developers and IT Operations
  • DevOps und CI/CD-Pipelines sind bei diesem Ansatz in der Regel „ein Muss“.DevOps and CI/CD pipelines are usually ‘a must’ for this approach. Wenn sie zurzeit nicht in der Kultur der Organisation vorhanden sind, stellt dies möglicherweise eine weitere Herausforderung dar.If not currently present in the culture of the organization, it might be an additional challenge
  • Erfordert eine Neustrukturierung für cloudnative Apps und Microservicearchitekturen und erfordert in der Regel erhebliches Refactoring von Code oder ein Neuschreiben bei der Modernisierung (erhöhter Zeit- und Budgetbedarf)Requires rearchitecture for cloud native apps and microservice architectures and usually requires significant code refactoring or rewriting when modernizing (increased time and budget)
  • Tabelle 1-1.Table 1-1. Vorteile und Herausforderungen von Modernisierungspfaden für vorhandene .NET-Anwendungen und -DiensteBenefits and challenges of modernization paths for existing .NET applications and services

    Schlüsseltechnologien und -architekturen nach ReifegradKey technologies and architectures by maturity level

    .NET Framework-Anwendungen begannen ursprünglich mit .NET Framework Version 1.0, die Ende 2001 veröffentlicht wurde..NET Framework applications initially started with the .NET Framework version 1.0, which was released in late 2001. Dann haben Unternehmen neuere Versionen (wie 2.0, 3.5 und .NET 4.x) verwendet.Then, companies moved towards newer versions (such as 2.0, 3.5 and .NET 4.x). Die meisten dieser Anwendungen wurden unter Windows Server und Internet Information Server (IIS) ausgeführt und verwendeten eine relationale Datenbank (z.B. SQL Server, Oracle, MySQL oder andere RDBMS).Most of those applications ran on Windows Server and Internet Information Server (IIS), and used a relational database, like SQL Server, Oracle, MySQL, or any other RDBMS.

    Die meisten vorhandenen .NET-Anwendungen basieren heute auf .NET Framework 4.x oder sogar auf .NET Framework 3.5 und verwenden Webframeworks wie ASP.NET MVC, ASP.NET Web Forms, ASP.NET-Web-API, Windows Communication Foundation (WCF), ASP.NET SignalR oder ASP.NET Web Pages.Most existing .NET applications might nowadays be based on .NET Framework 4.x, or even on .NET Framework 3.5, and use web frameworks like ASP.NET MVC, ASP.NET Web Forms, ASP.NET Web API, Windows Communication Foundation (WCF), ASP.NET SignalR, and ASP.NET Web Pages. Diese etablierten .NET Framework-Technologien sind von Windows abhängig.These established .NET Framework technologies depend on Windows. Diese Abhängigkeit muss unbedingt berücksichtigt werden, wenn Sie nur Legacy-Apps migrieren und minimale Änderungen an Ihrer Anwendungsinfrastruktur vornehmen möchten.That dependency is important to consider if you are simply migrating legacy apps and you want to make minimal changes to your application infrastructure.

    Abbildung 1-2 zeigt die primären Technologien und Architekturstile, die bei jedem der drei Cloudreifegrade verwendet werden:Figure 1-2 shows the primary technologies and architecture styles used at each of the three cloud maturity levels:

    Primäre Technologien für jeden Reifegrad zur Modernisierung vorhandener .NET-Webanwendungen

    Abbildung 1-2.Figure 1-2. Primäre Technologien für jeden Reifegrad zur Modernisierung vorhandener .NET-WebanwendungenPrimary technologies for each maturity level for modernizing existing .NET web applications

    Abbildung 1-2 zeigt die gängigsten Szenarien. Es sind aber viele hybride und gemischte Varianten bezüglich der Architektur denkbar.Figure 1-2 highlights the most common scenarios, but many hybrid and mixed variations are possible when it comes to architecture. Die Reifegradmodelle gelten beispielsweise nicht nur für monolithische Architekturen in vorhandenen Web-Apps, sondern auch für Dienstorientierung, n-schichtige und andere Architekturstilvarianten.For example, the maturity models apply not only to monolithic architectures in existing web apps, but also to service orientation, N-Tier, and other architecture style variations. Ein größerer Schwerpunkt auf einem der Architekturtypen und den zugehörigen Technologien (oder ein größerer Prozentsatz) bestimmt die Gesamtreifestufe der Anwendungen.The higher focus or percentage on one or another architecture type and related technologies determines the overall maturity level of your applications.

    Jeder Reifegrad im Modernisierungsprozess ist mit den folgenden Schlüsseltechnologien und -ansätzen verbunden:Each maturity level in the modernization process is associated with the following key technologies and approaches:

    • Bereit für Cloudinfrastruktur (erneutes Hosten oder grundlegendes Übertragen und Verschieben): In einem ersten Schritt möchten viele Organisationen nur schnell eine Cloudmigrationsstrategie ausführen.Cloud Infrastructure-Ready (rehost or basic lift & shift): As a first step, many organizations want only to quickly execute a cloud-migration strategy. In diesem Fall werden Anwendungen neu gehostet.In this case, applications are rehosted. Ein Großteil des erneuten Hostens kann automatisiert werden, indem Azure Migrate verwendet wird, ein Dienst, der Anleitung, Einblicke und Mechanismen bietet, die benötigt werden, um Sie basierend auf Cloudtools wie Azure Site Recovery und Azure Database Migration Service bei der Migration nach Azure zu unterstützen.Most rehosting can be automated by using Azure Migrate, a service that provides the guidance, insights, and mechanisms needed to assist you in migrating to Azure based on cloud tools like Azure Site Recovery and Azure Database Migration Service. Sie können erneutes Hosten auch manuell einrichten, sodass Sie beim Verschieben von Legacy-Apps in die Cloud Infrastrukturdetails über Ihre Ressourcen erfahren können.You can also set up rehosting manually, so that you can learn infrastructure details about your assets when you move legacy apps to the cloud. Beispielsweise können Sie Ihre Anwendungen mit geringen Änderungen auf virtuelle Computer in Azure verschieben (wahrscheinlich mit nur geringen Konfigurationsänderungen).For example, you can move your applications to VMs in Azure with little modification-probably with only minor configuration changes. Die Netzwerkfunktionalität ähnelt in diesem Fall einer lokalen Umgebung, insbesondere wenn Sie virtuelle Netzwerke in Azure erstellen.The networking in this case is similar to an on-premises environment, especially if you create virtual networks in Azure.

    • Cloudoptimiert (verwaltete Dienste und Windows-Container): In diesem Modell geht es darum, einige wichtige Bereitstellungsoptimierungen vorzunehmen, um signifikante Vorteile aus der Cloud zu ziehen, ohne die Kernarchitektur der Anwendung zu verändern.Cloud-Optimized (Managed Services and Windows Containers): This model is about making a few important deployment optimizations to gain some significant benefits from the cloud, without changing the core architecture of the application. Der grundlegende Schritt hierbei besteht darin, Ihren vorhandenen .NET Framework-Anwendungen Unterstützung für Windows-Container hinzuzufügen.The fundamental step here is to add Windows Containers support to your existing .NET Framework applications. Dieser wichtige Schritt (Containerisierung) erfordert kein Ändern des Codes, sodass der gesamte Übertragungs- und Verschiebeaufwand gering ist.This important step (containerization) doesn't require touching the code, so the overall lift and shift effort is light. Sie können Tools wie Image2Docker oder Visual Studio mit den Tools für Docker verwenden.You can use tools like Image2Docker or Visual Studio, with its tools for Docker. Visual Studio wählt automatisch intelligente Standardeinstellungen für ASP.NET-Anwendungen und Windows Container-Images aus.Visual Studio automatically chooses smart defaults for ASP.NET applications and Windows Containers images. Diese Tools bieten sowohl eine schnelle innere Schleife als auch einen schnellen Weg, um die Container in Azure zu übertragen.These tools offer both a rapid inner loop, and a fast path to get the containers to Azure. Ihre Agilität wird verbessert, wenn die Bereitstellung in mehreren Umgebungen erfolgt.Your agility is improved when you deploy to multiple environments. Anschließend können Sie Ihre Windows-Container beim Übergang in die Produktion in Azure Web App für Container, Azure Container Instances (ACI) und in Azure VMs mit Windows Server 2016 und Containern bereitstellen, wenn Sie einen IaaS-Ansatz bevorzugen.Then, moving to production, you can deploy your Windows Containers to Azure Web App for Containers, Azure Container Instances (ACI), and Azure VMs with Windows Server 2016 and containers if you prefer an IaaS approach. Für komplexere Anwendungen mit mehreren Containern sollten Sie Orchestratoren wie Azure Kubernetes Service (AKS/ACS) in Betracht ziehen.For more complex multi-container applications, consider using orchestrators like Azure Kubernetes Service (AKS/ACS).

    Während dieser ersten Modernisierung können Sie auch Ressourcen aus der Cloud hinzufügen, z.B. Überwachung mit Tools wie Azure Application Insights, CI-/CD-Pipelines für Ihre App-Lebenszyklen mit Azure DevOps Services und viele weitere Datenressourcendienste, die in Azure verfügbar sind.During this initial modernization, you can also add assets from the cloud, such as monitoring with tools like Azure Application Insights; CI/CD pipelines for your app lifecycles with Azure DevOps Services; and many more data resource services that are available in Azure. Beispielsweise können Sie eine monolithische Web-App., die ursprünglich unter Verwendung von traditionellem ASP.NET Web Forms oder ASP.NET MVC entwickelt wurde, ändern, aber jetzt stellen Sie sie mit Hilfe von Windows-Containern bereit.For instance, you can modify a monolithic web app that was originally developed by using traditional ASP.NET Web Forms or ASP.NET MVC, but now you deploy it by using Windows Containers. Wenn Sie Windows-Container verwenden, sollten Sie Ihre Daten auch zu einer Datenbank in einer verwalteten Azure SQL-Datenbank-Instanz migrieren, ohne die Kernarchitektur Ihrer Anwendung zu verändern.When you use Windows Containers, you should also migrate your data to a database in Azure SQL Database Managed Instance, all without changing the core architecture of your application.

    • Cloudnativ: Wie bereits erwähnt, sollten Sie über die Entwicklung von cloudnativen Anwendungen nachdenken, wenn Sie große und komplexe Anwendungen mit mehreren unabhängigen Entwicklungsteams anstreben, die an verschiedenen Microservices arbeiten, die autonom entwickelt und bereitgestellt werden können.Cloud-Native: As introduced, you should think about architecting cloud-native applications when you are targeting large and complex applications with multiple independent development teams working on different microservices that can be developed and deployed autonomously. Dies gilt auch aufgrund der granularisierten und unabhängigen Skalierbarkeit pro Microservice.Also, due to granularized and independent scalability per microservice. Diese Architekturansätze bringen sehr wichtige Herausforderungen und Komplexitäten mit sich, können aber durch den Einsatz von Cloud-PaaS und Orchestratoren wie Azure Kubernetes Service (AKS/ACS) (verwaltete Kubernetes-Dienste) und Azure Functions für einen serverlosen Ansatz erheblich vereinfacht werden.These architectural approaches face very important challenges and complexities but can be greatly simplified by using cloud PaaS and orchestrators like Azure Kubernetes Service (AKS/ACS) (managed Kubernetes), and Azure Functions for a serverless approach. Alle diese Ansätze (wie Microservices und serverlose Lösungen) erfordern in der Regel, dass Sie für die Cloud entwickeln und neuen Code schreiben, der an bestimmte PaaS-Plattformen angepasst ist, oder Code, der sich an bestimmte Architekturen wie Microservices anpasst.All these approaches (like microservices and Serverless) typically require you to architect for the cloud and write new code—code that is adapted to specific PaaS platforms, or code that aligns with specific architectures, like microservices.

    Abbildung 1-3 zeigt die internen Technologien, die Sie für jeden Reifegrad verwenden können:Figure 1-3 shows the internal technologies that you can use for each maturity level:

    Interne Technologien für jeden Modernisierungsreifegrad

    Abbildung 1-3.Figure 1-3. Interne Technologien für jeden ModernisierungsreifegradInternal technologies for each modernization maturity level

    Übertragungs- und VerschiebeszenarioLift and shift scenario

    Beachten Sie bei der Migration mit Übertragung und Verschiebung, dass Sie in Ihren Anwendungsszenarien viele verschiedene Varianten von Übertragung und Verschiebung verwenden können.For lift and shift migrations, keep in mind that you can use many different variations of lift and shift in your application scenarios. Wenn Sie Ihre Anwendung nur neu hosten, liegt möglicherweise ein Szenario wie in Abbildung 1-4 dargestellt vor, in dem Sie virtuelle Computer in der Cloud nur für Ihre Anwendung und für Ihren Datenbankserver verwenden.If you only rehost your application, you might have a scenario like the one shown in Figure 1-4, where you use VMs in the cloud only for your application and for your database server.

    Beispiel für ein reines IaaS-Szenario in der Cloud

    Abbildung 1-4.Figure 1-4. Beispiel für ein reines IaaS-Szenario in der CloudExample of a pure IaaS scenario in the cloud

    ModernisierungsszenarienModernization scenarios

    Für Modernisierungsszenarien steht Ihnen möglicherweise eine reine cloudoptimierte Anwendung zur Verfügung, die nur Elemente aus dieser Reifestufe verwendet.For modernization scenarios, you might have a pure Cloud-Optimized application that uses elements only from that maturity level. Sie könnten auch eine Anwendung mit einigen Elementen aus „Bereit für Cloudinfrastruktur“ und anderen Elementen aus „Cloudoptimiert“ einsetzen (ein Auswahl- oder gemischtes Modell), wie in Abbildung 1-5 dargestellt.Or, you might have an intermediate-state application with some elements from Cloud Infrastructure-Ready and other elements from Cloud-Optimized (a "pick and choose" or mixed model), like in Figure 1-5.

    Beispielauswahlszenario mit Datenbank unter IaaS, DevOps und Containerisierung von Ressourcen

    Abbildung 1-5.Figure 1-5. Beispielauswahlszenario mit Datenbank unter IaaS, DevOps und Containerisierung von RessourcenExample "pick and choose" scenario, with database on IaaS, DevOps, and containerization assets

    Im nächsten Schritt (als ideales Szenario für die Migration zahlreicher vorhandener .NET Framework-Anwendungen) könnten Sie zu einer cloudoptimierten Anwendung migrieren, um großen Nutzen aus wenig Aufwand zu ziehen.Next, as the ideal scenario for many existing .NET Framework applications to migrate, you could migrate to a Cloud-Optimized application, to get significant benefits from little work. Dieser Ansatz bereitet Sie auch auf cloudnative Lösungen als mögliche Option für die Zukunft vor.This approach also sets you up for Cloud-Native as a possible future evolution. Abbildung 1-6 zeigt ein Beispiel.Figure 1-6 shows an example.

    Beispielszenario für Apps, die cloudoptimiert sind, mit Windows-Containern und verwalteten Diensten

    Abbildung 1-6.Figure 1-6. Beispielszenario für Apps, die cloudoptimiert sind, mit Windows-Containern und verwalteten DienstenExample Cloud-Optimized apps scenario, with Windows Containers and managed services

    Darüber hinaus können Sie Ihre vorhandene cloudoptimierte Anwendung um einige Microservices für bestimmte Szenarien erweitern.Going even further, you could extend your existing Cloud-Optimized application by adding a few microservices for specific scenarios. Damit würden Sie teilweise die Ebene des cloudnativen Modells erreichen, die aber nicht im Mittelpunkt des vorliegenden Leitfadens steht.This would move you partially to the level of Cloud-Native model, which is not the main focus of the present guidance.

    Was in diesem Leitfaden nicht behandelt wirdWhat this guide does not cover

    Dieser Leitfaden behandelt eine bestimmte Teilmenge der in Abbildung 1-7 dargestellten Beispielszenarien.This guide covers a specific subset of the example scenarios, as shown in Figure 1-7. Dieser Leitfaden konzentriert sich ausschließlich auf Szenarien mit Übertragung und Verschiebung und letztlich auf das Modell „Cloudoptimiert“.This guide focuses only on lift and shift scenarios, and ultimately, on the Cloud-Optimized model. Im Modell „Cloudoptimiert“ wird eine .NET Framework-Anwendung mithilfe von Windows-Containern und zusätzlichen Komponenten wie Überwachung und CI-/CD-Pipelines modernisiert.In the Cloud-Optimized model, a .NET Framework application is modernized by using Windows Containers, plus additional components like monitoring and CI/CD pipelines. Jede Komponente ist wesentlich für die schnellere und flexiblere Bereitstellung von Anwendungen in der Cloud.Each component is fundamental to deploying applications to the cloud, faster, and with agility.

    Cloudnative Lösungen werden jedoch nicht in diesem Leitfaden behandelt.

    Abbildung 1-7.Figure 1-7. Cloudnative Lösungen werden jedoch nicht in diesem Leitfaden behandelt.Cloud-Native is not covered in this guide

    Der Schwerpunkt dieses Leitfadens ist spezifisch.The focus of this guide is specific. Er zeigt Ihnen den Weg, den Sie einschlagen können, um eine Übertragung und Verschiebung Ihrer vorhandenen .NET-Anwendungen zu erreichen, ohne dass Sie die Architektur oder Code ändern müssen.It shows you the path you can take to achieve a lift and shift of your existing .NET applications, without rearchitecting, and with no code changes. Schließlich zeigt er Ihnen, wie Sie eine Cloudoptimierung Ihrer Anwendung erreichen können.Ultimately, it shows you how to make your application Cloud-Optimized.

    In diesem Leitfaden wird nicht gezeigt, wie Sie cloudnative Anwendungen erstellen (z.B. die Entwicklung einer Microservicesarchitektur).This guide doesn't show you how to create Cloud-Native applications, such as how to evolve to a microservices architecture. Um Ihre Anwendungen neu zu strukturieren oder brandneue Anwendungen zu erstellen, die auf Microservices basieren, lesen Sie das E-Book .NET Microservices: Architektur für containerisierte .NET-Anwendungen.To rearchitect your applications or to create brand-new applications that are based on microservices, see the e-book .NET Microservices: Architecture for containerized .NET applications.

    Zusätzliche RessourcenAdditional resources

    • Containerized Docker Application Lifecycle with Microsoft Platform and Tools (Lebenszyklus von Docker-Containeranwendungen mit der Microsoft-Plattform und Microsoft-Tools) (E-Book zum Download) Containerized Docker application lifecycle with Microsoft platform and tools (downloadable e-book)
      https://aka.ms/dockerlifecycleebook

    • .NET-Microservices: Architektur für .NET-Containeranwendungen (E-Book zum Download) .NET Microservices: Architecture for containerized .NET applications (downloadable e-book)
      https://aka.ms/microservicesebook

    • Architektur moderner Webanwendungen mit ASP.NET Core und Azure (E-Book zum Download) Architecting modern web applications with ASP.NET Core and Azure (downloadable e-book)
      https://aka.ms/webappebook

    Zielgruppe dieses LeitfadensWho should use this guide

    Dieser Leitfaden wurde für Entwickler und Lösungsarchitekten geschrieben, die vorhandene ASP.NET-Webanwendungen oder WCF-Dienste, die auf .NET Framework basieren, modernisieren möchten, um die Flexibilität bei der Auslieferung und dem Release von Anwendungen zu verbessern.This guide was written for developers and solution architects who want to modernize existing ASP.NET web applications or WCF services that are based on the .NET Framework, for improved agility in shipping and releasing applications.

    Möglicherweise finden Sie diesen Leitfaden auch nützlich, wenn Sie ein technischer Entscheidungsträger sind (z.B. ein Unternehmensarchitekt oder ein Entwicklungsleiter), der sich nur einen Überblick über die Vorteile verschaffen möchte, die durch die Verwendung von Windows-Containern und die Bereitstellung in der Cloud unter Verwendung von Microsoft Azure erzielt werden können.You also might find this guide useful if you are a technical decision maker, such as an enterprise architect or a development lead/director who just wants an overview of the benefits that you can get by using Windows Containers, and by deploying to the cloud when using Microsoft Azure.

    So verwenden Sie diesen LeitfadenHow to use this guide

    Dieser Leitfaden befasst sich mit dem „Warum“ (warum Sie Ihre vorhandenen Anwendungen modernisieren sollten) und mit den spezifischen Vorteilen, die Ihnen die Verwendung von Windows-Containern bietet, wenn Sie Ihre Apps in die Cloud verschieben.This guide addresses the "why"-why you might want to modernize your existing applications, and the specific benefits you get from using Windows Containers when you move your apps to the cloud. Der Inhalt der ersten Kapitel des Leitfadens richtet sich an Architekten und technische Entscheidungsträger, die sich einen Überblick verschaffen möchten, sich aber nicht auf die Umsetzung und technische Details konzentrieren müssen.The content in the first few chapters of the guide is designed for architects and technical decision makers who want an overview, but who don't need to focus on implementation and technical, step-by-step details.

    Im letzten Kapitel dieses Leitfadens werden mehrere exemplarische Vorgehensweisen vorgestellt, die sich auf spezifische Bereitstellungsszenarien konzentrieren.The last chapter of this guide introduces multiple walkthroughs that focus on specific deployment scenarios. Dieser Leitfaden bietet kürzere Versionen der exemplarischen Vorgehensweisen an, um die Szenarien zusammenzufassen und ihre Vorteile aufzuzeigen.This guide offers shorter versions of the walkthroughs, to summarize the scenarios and highlight their benefits. Die vollständigen exemplarischen Vorgehensweisen befassen sich ausführlich mit den Einrichtungs- und Implementierungsdetails und werden als eine Gruppe von Wiki-Beiträgen in dem gleichen öffentlichen GitHub Repository veröffentlicht, in dem sich verwandte Beispiel-Apps befinden (siehe nächster Abschnitt).The full walkthroughs drill down into setup and implementation details, and are published as a set of wiki posts in the same public GitHub repo where related sample apps reside (discussed in the next section). Das letzte Kapitel und die schrittweisen exemplarischen Wiki-Vorgehensweisen auf GitHub werden für Entwickler und Architekten, die sich auf Implementierungsdetails konzentrieren möchten, von größerem Interesse sein.The last chapter and the step-by-step wiki walkthroughs on GitHub will be of more interest to developers and architects who want to focus on implementation details.

    Beispiel-Apps für die Modernisierung von Legacy-Apps: eShopModernizingSample apps for modernizing legacy apps: eShopModernizing

    Das eShopModernizing-Repository auf GitHub bietet zwei Beispielanwendungen, die monolithische Legacywebanwendungen simulieren.The eShopModernizing repo on GitHub offers two sample applications that simulate legacy monolithic web applications. Eine Web-App wird mit ASP.NET MVC entwickelt, die zweite Web-App mit ASP.NET Web Forms, und die dritte App ist eine n-schichtige App mit einer WinForms-Clientdesktop-App, die ein Back-End des WCF-Diensts verwendet.One web app is developed by using ASP.NET MVC; the second web app is developed by using ASP.NET Web Forms and the third app is an N-Tier app with a WinForms client desktop app consuming a WCF service backend. Alle diese Web-Apps basieren auf dem traditionellen .NET Framework.All these apps are based on the traditional .NET Framework. Diese Beispiel-Apps verwenden nicht .NET Core oder ASP.NET Core, da es sich dabei um vorhandene bzw. zu modernisierende .NET Framework-Anwendungen handelt.These sample apps don't use .NET Core or ASP.NET Core as they are supposed to be existing/legacy .NET Framework applications to be modernized.

    Für diese Beispiel-Apps ist eine zweite Version mit modernisiertem Code verfügbar, die recht einfach ist.These sample apps have a second version, with modernized code, and which are fairly straightforward. Der wichtigste Unterschied zwischen den App-Versionen besteht darin, dass die jeweils zweite Version Windows-Container als Bereitstellungsauswahl verwendet.The most important difference between the app versions is that the second versions use Windows Containers as the deployment choice. Es gibt auch einige Ergänzungen zu den zweiten Versionen, wie Azure Storage Blobs für die Verwaltung von Images, Azure Active Directory für die Verwaltung der Sicherheit und Azure Application Insights für die Überwachung und Überprüfung der Anwendungen.There also are a few additions to the second versions, like Azure Storage Blobs for managing images, Azure Active Directory for managing security, and Azure Application Insights for monitoring and auditing the applications.

    Senden Sie uns Ihr FeedbackSend your feedback

    Dieser Leitfaden wurde verfasst, um Ihnen zu helfen, Ihre Möglichkeiten zur Verbesserung und Modernisierung vorhandener .NET-Webanwendungen zu verstehen.This guide was written to help you understand your options for improving and modernizing existing .NET web applications. Der Leitfaden und die zugehörigen Anwendungsbeispiele werden ständig weiterentwickelt.The guide and related sample applications are evolving. Wir freuen uns auf Ihr Feedback!Your feedback is welcome! Wenn Sie Anmerkungen dazu haben, wie dieser Leitfaden hilfreicher gestaltet werden könnte, senden Sie diese bitte an dotnet-architecture-ebooks-feedback@service.microsoft.com.If you have comments about how this guide might be more helpful, please send them to dotnet-architecture-ebooks-feedback@service.microsoft.com.