Modernisieren Sie ASP.NET Web Forms-Anwendungen auf AWS - AWS Prescriptive Guidance

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Modernisieren Sie ASP.NET Web Forms-Anwendungen auf AWS

Erstellt von Vijai Anand Ramalingam (AWS) und Sreelaxmi Pai (AWS)

Umgebung: PoC oder Pilotprojekt

Technologien: Modernisierung; Container und Mikroservices DevelopmentAndTesting; Web- und mobile Apps

Arbeitslast: Microsoft

AWS-Services: Amazon CloudWatch; Amazon ECS; AWS Systems Manager

Übersicht

Dieses Muster beschreibt die Schritte zur Modernisierung einer älteren, monolithischen ASP.NET Web Forms-Anwendung durch Portierung auf ASP.NET Core auf AWS.

Durch die Portierung von ASP.NET Web Forms-Anwendungen auf ASP.NET Core können Sie die Leistung, die Kosteneinsparungen und das robuste Ökosystem von Linux nutzen. Dies kann jedoch ein erheblicher manueller Aufwand sein. In diesem Muster wird die Legacy-Anwendung schrittweise mithilfe eines schrittweisen Ansatzes modernisiert und anschließend in der AWS-Cloud containerisiert.

Stellen Sie sich eine ältere, monolithische Anwendung für einen Einkaufswagen vor. Nehmen wir an, dass sie als ASP.NET-Webforms-Anwendung erstellt wurde und aus ASPX-Seiten mit einer Code-Behind () -Datei besteht. aspx.cs Der Modernisierungsprozess besteht aus den folgenden Schritten:

  1. Teilen Sie den Monolith in Microservices auf, indem Sie die entsprechenden Zerlegungsmuster verwenden. Weitere Informationen finden Sie im Leitfaden Decomposing monoliths into microservices auf der AWS Prescriptive Guidance Guidance-Website.

  2. Portieren Sie Ihre ältere ASP.NET Web Forms (.NET Framework) -Anwendung auf ASP.NET Core in .NET 5 oder höher. In diesem Muster verwenden Sie den Portierungsassistenten für .NET, um Ihre ASP.NET Web Forms-Anwendung zu scannen und Inkompatibilitäten mit ASP.NET Core zu identifizieren. Dadurch wird der manuelle Portierungsaufwand reduziert.

  3. Entwickeln Sie die Web Forms-Benutzeroberflächenebene mithilfe von React neu. Dieses Muster deckt die Neuentwicklung der Benutzeroberfläche nicht ab. Anweisungen finden Sie unter Neue React-App erstellen in der React-Dokumentation.

  4. Entwickeln Sie die Web Forms-Codebehind-Datei (Geschäftsschnittstelle) als ASP.NET Core-Web-API neu. Dieses Muster verwendet NDepend-Berichte, um benötigte Dateien und Abhängigkeiten zu identifizieren.

  5. Aktualisieren Sie gemeinsam genutzte Projekte wie Business Logic und Data Access in Ihrer Legacy-Anwendung auf .NET 5 oder höher, indem Sie den Portierungsassistenten für .NET verwenden. 

  6. Fügen Sie AWS-Services hinzu, um Ihre Anwendung zu ergänzen. Sie können beispielsweise Amazon CloudWatch Logs verwenden, um die Protokolle Ihrer Anwendung zu überwachen, zu speichern und darauf zuzugreifen, und AWS Systems Manager, um Ihre Anwendungseinstellungen zu speichern.

  7. Containerisieren Sie die modernisierte ASP.NET Core-Anwendung. Dieses Muster erstellt eine Docker-Datei, die auf Linux in Visual Studio abzielt und Docker Desktop verwendet, um sie lokal zu testen. In diesem Schritt wird davon ausgegangen, dass Ihre Legacy-Anwendung bereits auf einer lokalen Windows-Instance oder einer Amazon Elastic Compute Cloud (Amazon EC2) -Instance ausgeführt wird. Weitere Informationen finden Sie im Muster Einen ASP.NET Core-Web-API-Docker-Container auf einer Amazon EC2 EC2-Linux-Instance ausführen.

  8. Stellen Sie die modernisierte ASP.NET-Kernanwendung auf Amazon Elastic Container Service (Amazon ECS) bereit. Dieses Muster deckt den Bereitstellungsschritt nicht ab. Anweisungen finden Sie im Amazon ECS-Workshop.

Hinweis: Dieses Muster deckt keine Schritte zur Entwicklung der Benutzeroberfläche, zur Datenbankmodernisierung oder zur Container-Bereitstellung ab.

Voraussetzungen und Einschränkungen

Voraussetzungen

Architektur

Modernisierung der Warenkorb-Anwendung

Das folgende Diagramm veranschaulicht den Modernisierungsprozess für eine ältere ASP.NET-Einkaufswagenanwendung.

Modernisierung einer älteren Warenkorbanwendung

Zielarchitektur

Das folgende Diagramm veranschaulicht die Architektur der modernisierten Einkaufswagen-Anwendung auf AWS. ASP.NET Core-Web-APIs werden in einem Amazon ECS-Cluster bereitgestellt. Protokollierungs- und Konfigurationsservices werden von Amazon CloudWatch Logs und AWS Systems Manager bereitgestellt.

Zielarchitektur für die ASP.NET Web Forms-Anwendung auf AWS

Tools

AWS-Services

  • Amazon ECS — Amazon Elastic Container Service (Amazon ECS) ist ein hoch skalierbarer, schneller Container-Management-Service zum Ausführen, Stoppen und Verwalten von Containern in einem Cluster. Sie können Ihre Aufgaben und Services auf einer serverlosen Infrastruktur ausführen, die von AWS Fargate verwaltet wird. Um mehr Kontrolle über Ihre Infrastruktur zu erhalten, können Sie Ihre Aufgaben und Dienste alternativ auf einem Cluster von EC2-Instances ausführen, die Sie verwalten.

  • Amazon CloudWatch Logs — Amazon CloudWatch Logs zentralisiert die Protokolle all Ihrer Systeme, Anwendungen und AWS-Services, die Sie verwenden. Sie können die Protokolle anzeigen und überwachen, sie nach bestimmten Fehlercodes oder Mustern durchsuchen, sie nach bestimmten Feldern filtern oder sie für future Analysen sicher archivieren.

  • AWS Systems Manager ─ AWS Systems Manager ist ein AWS-Service, mit dem Sie Ihre Infrastruktur auf AWS anzeigen und steuern können. Mithilfe der Systems Manager Manager-Konsole können Sie Betriebsdaten von mehreren AWS-Services anzeigen und betriebliche Aufgaben in Ihren AWS-Ressourcen automatisieren. Systems Manager unterstützt Sie bei der Aufrechterhaltung von Sicherheit und Compliance, indem es Ihre verwalteten Instanzen scannt und festgestellte Richtlinienverstöße meldet (oder Korrekturmaßnahmen ergreift).

Tools

  • Visual Studio oder Visual Studio Code — Tools zum Erstellen von.NET-Anwendungen, Web-APIs und anderen Programmen.

  • AWS Toolkit for Visual Studio — Eine Erweiterung für Visual Studio, die beim Entwickeln, Debuggen und Bereitstellen von.NET-Anwendungen hilft, die AWS-Services verwenden.

  • Docker Desktop — Ein Tool, das die Erstellung und Bereitstellung containerisierter Anwendungen vereinfacht.

  • NDepend — Ein Analysator, der .NET-Code auf Abhängigkeiten, Qualitätsprobleme und Codeänderungen überwacht.

  • Portierungsassistent für .NET — Ein Analysetool, das .NET-Code scannt, um Inkompatibilitäten mit .NET Core zu identifizieren und den Migrationsaufwand abzuschätzen.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Aktualisieren Sie Ihre.NET Framework-Legacy-Anwendung auf .NET 5.

Sie können den Portierungsassistenten für .NET verwenden, um Ihre ältere ASP.NET Web Forms-Anwendung auf .NET 5 oder höher zu konvertieren. Folgen Sie den Anweisungen in der Dokumentation zu Porting Assistant for .NET.

App-Developer

Generieren Sie NDepend-Berichte.

Wenn Sie Ihre ASP.NET Web Forms-Anwendung modernisieren, indem Sie sie in Microservices zerlegen, benötigen Sie möglicherweise nicht alle .cs-Dateien aus der Legacy-Anwendung. Sie können NDepend verwenden, um einen Bericht für jede Code-Behind (.cs) -Datei zu generieren, um alle Aufrufer und Aufrufer abzurufen. Dieser Bericht hilft Ihnen dabei, nur die benötigten Dateien in Ihren Microservices zu identifizieren und zu verwenden.

Nachdem Sie NDepend installiert haben (siehe Abschnitt Voraussetzungen), öffnen Sie die Lösung (.sln-Datei) für Ihre Legacy-Anwendung in Visual Studio und gehen Sie wie folgt vor:

  1. Erstellen Sie die Legacy-Anwendung in Visual Studio.

  2. Wählen Sie in der Visual Studio-Menüleiste NDepend, Neues NDepend-Projekt an aktuelle VS-Lösung anhängen.  

  3. Wählen Sie .NET-Assemblys analysieren

  4. Wenn die Analyse abgeschlossen ist, navigieren Sie im Solution Explorer zu dem Projekt. Klicken Sie mit der rechten Maustaste auf eine beliebige Codebehind-Datei (z. B.listproducts.aspx.cs), für die Sie den Bericht erstellen möchten, und wählen Sie dann Im Abhängigkeitsdiagramm anzeigen aus. 

  5. Wählen Sie in der Navigationsleiste Anrufer und Anrufer und anschließend Codeabfrage bearbeiten aus. 

  6. Wählen Sie im Bereich Abfragen und Regeln bearbeiten den Download-Pfeil und dann Nach Excel exportieren aus.

Dieser Vorgang generiert einen Bericht für die Code-Behind-Datei, in der alle Anrufer und Anrufer aufgeführt sind. Weitere Informationen zum Abhängigkeitsdiagramm finden Sie in der NDepend-Dokumentation.

App-Developer

Erstellen Sie eine neue.NET 5-Lösung.

So erstellen Sie eine neue.NET 5-Struktur (oder höher) für Ihre modernisierten ASP.NET Core-Web-APIs:

  1. Öffnen Sie Visual Studio.

  2. Erstellen Sie eine neue, leere Lösung.

  3. Erstellen Sie neue Projekte, die auf .NET 5 (oder höher) abzielen und auf Ihrer Legacy-Anwendung basieren. Beispiele für ältere und neue Projekte für eine Einkaufswagen-Anwendung finden Sie im Abschnitt Zusätzliche Informationen.

  4. Verwenden Sie den NDepend-Bericht aus dem vorherigen Schritt, um alle erforderlichen Dateien zu identifizieren. Kopieren Sie diese Dateien aus der Anwendung, die Sie zuvor aktualisiert haben, und fügen Sie sie der neuen Lösung hinzu.

  5. Erstellen Sie die Lösung und beheben Sie alle Probleme.

Weitere Informationen zum Erstellen von Projekten und Lösungen finden Sie in der Visual Studio-Dokumentation.

Hinweis: Während Sie die Lösung erstellen und die Funktionalität überprüfen, können Sie zusätzlich zu den Dateien, die NDepend identifiziert hat, mehrere zusätzliche Dateien identifizieren, die der Lösung hinzugefügt werden sollen.

App-Developer
AufgabeBeschreibungErforderliche Fähigkeiten

Implementieren Sie Web-APIs mit ASP.NET Core.

Nehmen wir an, dass es sich bei einem der Microservices, die Sie in Ihrer alten Monolith-Einkaufswagen-Anwendung identifiziert haben, um Produkte handelt. Sie haben im vorherigen Epos ein neues ASP.NET Core-Web-API-Projekt für Produkte erstellt. In diesem Schritt identifizieren und modernisieren Sie alle Webformulare (.aspx-Seiten), die sich auf Produkte beziehen. Gehen wir davon aus, dass Produkte aus vier Webformularen bestehen, wie weiter oben im Abschnitt Architektur dargestellt:

  • Produkte auflisten

  • Produkt ansehen

  • Produkt hinzufügen/bearbeiten

  • Produkt löschen

Sie sollten jedes Webformular analysieren, alle Anfragen identifizieren, die an die Datenbank gesendet werden, um eine gewisse Logik auszuführen, und Antworten erhalten. Sie können jede Anfrage als Web-API-Endpunkt implementieren. Aufgrund ihrer Webformulare können Produkte die folgenden möglichen Endpunkte haben:

  • /api/products

  • /api/products/{id}

  • /api/products/add

  • /api/products/update/{id}

  • /api/products/delete/{id}

Wie bereits erwähnt, können Sie auch alle anderen Projekte, die Sie auf .NET 5 aktualisiert haben, wiederverwenden, einschließlich Business Logic, Data Access und gemeinsam genutzte/gemeinsame Projekte.

App-Developer

Konfigurieren Sie Amazon CloudWatch Logs.

Sie können Amazon CloudWatch Logs verwenden, um die Protokolle Ihrer Anwendung zu überwachen, zu speichern und darauf zuzugreifen. Sie können Daten mithilfe eines AWS-SDK in Amazon CloudWatch Logs protokollieren. Sie können auch.NET-Anwendungen in CloudWatch Logs integrieren, indem Sie gängige .NET-Logging-Frameworks wie NLog, Log4Net und das ASP.NET Core-Logging-Framework verwenden.

Weitere Informationen zu diesem Schritt finden Sie im Blogbeitrag Amazon CloudWatch Logs and.NET Logging Frameworks.

App-Developer

Konfigurieren Sie den AWS Systems Manager Parameter Store.

Sie können den AWS Systems Manager Parameter Store verwenden, um Anwendungseinstellungen wie Verbindungszeichenfolgen getrennt vom Code Ihrer Anwendung zu speichern. Das NuGet Paket Amazon.Extensions.Configuration. SystemsManagervereinfacht, wie Ihre Anwendung diese Einstellungen aus dem AWS Systems Manager Parameter Store in das .NET Core-Konfigurationssystem lädt. 

Weitere Informationen zu diesem Schritt finden Sie im Blogbeitrag .NET Core-Konfigurationsanbieter für AWS Systems Manager.

App-Developer
AufgabeBeschreibungErforderliche Fähigkeiten

Verwenden Sie ein geteiltes Cookie zur Authentifizierung.

Die Modernisierung einer älteren Monolith-Anwendung ist ein iterativer Prozess, bei dem der Monolith und seine modernisierte Version nebeneinander existieren müssen. Sie können ein geteiltes Cookie verwenden, um eine nahtlose Authentifizierung zwischen den beiden Versionen zu erreichen. Die ältere ASP.NET-Anwendung validiert weiterhin die Benutzeranmeldeinformationen und gibt das Cookie aus, während die modernisierte ASP.NET Core-Anwendung das Cookie validiert. 

Anweisungen und Beispielcode finden Sie im Beispielprojekt. GitHub

App-Developer
AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie ein Docker-Image mit Visual Studio.

In diesem Schritt erstellen Sie eine Docker-Datei mithilfe der Visual Studio for .NET Core-Web-API.

  1. Öffnen Sie Visual Studio. 

  2. Wählen Sie im Solution Explorer im Kontextmenü (Rechtsklick) Ihres Projekts die Optionen Hinzufügen, Docker-Unterstützung aus.

  3. Wählen Sie Linux als Zielbetriebssystem aus.

Visual Studio erstellt eine Docker-Datei für Ihr Projekt. Eine Docker-Beispieldatei finden Sie unter Visual Studio Container Tools for Docker auf der Microsoft-Website.

App-Developer

Erstellen Sie den Container mit Docker Desktop und führen Sie ihn aus.

Jetzt können Sie den Container in Docker Desktop erstellen, erstellen und ausführen.

  1. Öffnen Sie ein Befehlszeilenfenster. Navigieren Sie zu dem Lösungsordner, in dem sich die Docker-Datei befindet. Führen Sie den folgenden Befehl aus, um das Docker-Image zu erstellen:

    docker build -t aspnetcorewebapiimage -f Dockerfile .
  2. Führen Sie den folgenden Befehl aus, um alle Docker-Images anzuzeigen:

    docker images
  3. Führen Sie den folgenden Befehl aus, um einen Container zu erstellen und auszuführen:

    docker run -d -p 8080:80 --name aspnetcorewebapicontainer aspnetcorewebapiimage
  4. Öffnen Sie Docker Desktop und wählen Sie dann Containers/Apps. Sie können einen neuen Container mit dem Namen running sehen. aspnetcorewebapicontainer 

App-Developer

Zugehörige Ressourcen

Zusätzliche Informationen

Die folgenden Tabellen enthalten Beispiele für Beispielprojekte für eine ältere Warenkorbanwendung und die entsprechenden Projekte in Ihrer modernisierten ASP.NET Core-Anwendung.

Legacy-Lösung:

Project name

Vorlage für ein Projekt

Target framework

Geschäftsschnittstelle

Klassenbibliothek

.NET Framework.

BusinessLogic

Klassenbibliothek

.NET Framework.

WebApplication

ASP.NET Framework-Webanwendung

.NET Framework.

UnitTests

NUnit-Testprojekt

.NET Framework.

Geteilt -> Allgemein

Klassenbibliothek

.NET Framework.

Geteilt -> Framework

Klassenbibliothek

.NET Framework.

Neue Lösung:

Project name

Vorlage für ein Projekt

Target framework

BusinessLogic

Klassenbibliothek

.NET 5.0

<WebAPI>

ASP.NET-Core-Web-API

.NET 5.0

<WebAPI>. UnitTests

NUnit 3-Testprojekt

.NET 5.0

Geteilt -> Allgemein

Klassenbibliothek

.NET 5.0

Geteilt -> Framework

Klassenbibliothek

.NET 5.0