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.
ModernisierenASP. NET Web Forms-Anwendungen auf AWS
Erstellt von Vijai Anand Ramalingam () und Sreelaxmi Pai () AWS AWS
Übersicht
Dieses Muster beschreibt die Schritte zur Modernisierung eines alten Monolithen. ASP NET Web Forms-Anwendung, indem Sie sie in portierenASP. NET Kern anAWS.
PortierungASP. NET Web Forms-Anwendungen fürASP. NET Core hilft Ihnen dabei, die Leistung, die Kosteneinsparungen und das robuste Ökosystem von Linux zu nutzen. Dies kann jedoch ein erheblicher manueller Aufwand sein. Bei diesem Muster wird die Legacy-Anwendung schrittweise modernisiert, indem ein schrittweiser Ansatz verwendet wird, und anschließend in der Cloud containerisiert. AWS
Stellen Sie sich eine ältere, monolithische Anwendung für einen Einkaufswagen vor. Nehmen wir an, es wurde als erstellt. ASP NET Web Forms-Anwendung und besteht aus ASPX-Seiten mit einer Code-Behind () -Datei. aspx.cs
Der Modernisierungsprozess besteht aus den folgenden Schritten:
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 Prescriptive Guidance-Website. AWS
ASPPortieren Sie Ihr Vermächtnis. NET Webformulare (. NETFramework-) Anwendung fürASP. NET Kern rein. NET5 oder später. In diesem Muster verwenden Sie den Porting Assistant für. NETum deine zu scannenASP. NET Web Forms-Anwendung und Identifizierung von Inkompatibilitäten mit. ASP NET Kern. Dies reduziert den manuellen Portierungsaufwand.
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. Entwickeln Sie die Code-Behind-Datei (Geschäftsoberfläche) von Web Forms neu als. ASP NET KernnetzAPI. Dieses Muster verwendet NDepend Berichte, um benötigte Dateien und Abhängigkeiten zu identifizieren.
Aktualisieren Sie gemeinsam genutzte oder gemeinsame Projekte wie Business Logic und Data Access in Ihrer Legacy-Anwendung auf. NET5 oder höher, indem Sie den Porting Assistant für verwenden. NET.
Fügen Sie AWS Dienste 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 AWSSystems Manager
, um Ihre Anwendungseinstellungen zu speichern. Containerisieren Sie das Modernisierte. ASP NET Kernanwendung. Dieses Muster erstellt eine Docker-Datei, die auf Linux in Visual Studio abzielt, und verwendet Docker Desktop, 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 (AmazonEC2) -Instance ausgeführt wird. Weitere Informationen finden Sie im Muster Run anASP. NET APICore-Web-Docker-Container auf einer Amazon EC2 Linux-Instance.
Stellen Sie das Modernisierte ASP bereit. NETKernanwendung für Amazon Elastic Container Service (AmazonECS). Dieses Muster deckt den Bereitstellungsschritt nicht ab. Anweisungen finden Sie im ECSAmazon-Workshop
.
Anmerkung
Dieses Muster deckt keine Schritte zur Entwicklung der Benutzeroberfläche, zur Datenbankmodernisierung oder zur Container-Bereitstellung ab.
Voraussetzungen und Einschränkungen
Voraussetzungen
Visual Studio
oder Visual Studio Code , heruntergeladen und installiert. Zugriff auf ein AWS Konto über die AWS Managementkonsole und die AWS Befehlszeilenschnittstelle (AWSCLI) Version 2. (Weitere Informationen finden Sie in den Anweisungen zur Konfiguration von AWS CLI.)
Das AWS Toolkit for Visual Studio (siehe Setup-Anweisungen).
Docker Desktop, heruntergeladen und installiert
. . NETSDK, heruntergeladen
und installiert. NDependTool, heruntergeladen
und installiert. Um die NDepend Erweiterung für Visual Studio zu installieren, führen Sie den NDepend.VisualStudioExtension.Installer
Befehl aus (siehe Anweisungen). Sie können je nach Ihren Anforderungen Visual Studio 2019 oder 2022 auswählen. Portierungsassistent für. NET, heruntergeladen
und installiert.
Architektur
Modernisierung der Warenkorb-Anwendung
Das folgende Diagramm veranschaulicht den Modernisierungsprozess für ein veraltetes System. ASP NETEinkaufswagen-Anwendung.

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

Tools
AWS-Services
Amazon ECS — Amazon Elastic Container Service (AmazonECS) 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 Dienste 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 Dienste, 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.
AWSSystems Manager ─ AWS Systems Manager ist ein AWS Dienst, mit dem Sie Ihre Infrastruktur anzeigen und steuern könnenAWS. Mit der Systems Manager-Konsole können Sie Betriebsdaten aus mehreren AWS-Services einsehen und operative Aufgaben über Ihre AWS-Ressourcen hinweg 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. NETAnwendungen, Web APIs - und andere Programme. AWSToolkit for Visual Studio — Eine Erweiterung für Visual Studio, die beim Entwickeln, Debuggen und Bereitstellen hilft. NETAnwendungen, die Dienste verwendenAWS.
Docker Desktop
— Ein Tool, das die Erstellung und Bereitstellung containerisierter Anwendungen vereinfacht. NDepend
— Ein Analysator, der überwacht. NETCode für Abhängigkeiten, Qualitätsprobleme und Codeänderungen. Portierungsassistent für. NET
— Ein Analysetool, das scannt. NETCode zur Identifizierung von Inkompatibilitäten mit. NET Kern und zur Schätzung des Migrationsaufwands.
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Rüste deine auf. NET Framework-Legacy-Anwendung für. NET 5. | Sie können den Porting Assistant für verwenden. NETum Ihr Legacy zu konvertierenASP. NET Web Forms-Anwendung für. NET5 oder später. Folgen Sie den Anweisungen im Portierungsassistenten für. NETDokumentation. | App-Developer |
Generieren Sie NDepend Berichte. | Wenn Sie Ihre ASP modernisieren. NET Wenn Sie die Web Forms-Anwendung in Microservices zerlegen, benötigen Sie möglicherweise nicht alle .cs-Dateien aus der Legacy-Anwendung. Sie können sie verwendenNDepend, um einen Bericht für jede Code-Behind (.cs) -Datei zu generieren, um alle Anrufer und Anrufer abzurufen. Dieser Bericht hilft Ihnen dabei, nur die erforderlichen Dateien in Ihren Microservices zu identifizieren und zu verwenden. Öffnen Sie nach der Installation NDepend (siehe Abschnitt Voraussetzungen) die Lösung (.sln-Datei) für Ihre Legacy-Anwendung in Visual Studio und gehen Sie wie folgt vor:
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 Dokumentation. NDepend | App-Developer |
Erstellen Sie ein neues. NET5 Lösung. | Um ein neues zu erstellen. NET5 (oder später) Strukturen für Ihre modernisierte. ASP NET KernwebAPIs:
Weitere Informationen zum Erstellen von Projekten und Lösungen finden Sie in der Visual Studio-Dokumentation AnmerkungBeim Erstellen der Lösung und beim Überprüfen der Funktionalität können Sie zusätzlich zu den NDepend identifizierten Dateien mehrere zusätzliche Dateien identifizieren, die der Lösung hinzugefügt werden sollen. | App-Developer |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Implementieren Sie Web APIs mitASP. NET Kern. | Nehmen wir an, dass einer der Microservices, die Sie in Ihrer alten Monolith-Einkaufswagenanwendung identifiziert haben, Produkte ist. Sie haben einen neuen erstellt. ASP NET APIKern-Webprojekt für Produkte aus dem vorherigen Epos. 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:
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 API Web-Endpunkt implementieren. Aufgrund seiner Webformulare können Produkte die folgenden möglichen Endpunkte haben:
Wie bereits erwähnt, können Sie auch alle anderen Projekte, auf die Sie aktualisiert haben, wiederverwenden. NET5, einschließlich Geschäftslogik, Datenzugriff 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 in Amazon CloudWatch Logs protokollieren, indem Sie eine verwenden AWSSDK. Sie können auch integrieren. NETAnwendungen mit CloudWatch Protokollen mithilfe von Popular. NETLogging-Frameworks wie NLog Weitere Informationen zu diesem Schritt finden Sie im Blogbeitrag Amazon CloudWatch Logs und. NET Protokollierungs-Frameworks | App-Developer |
Konfigurieren Sie den AWS Systems Manager Manager-Parameterspeicher. | Sie können AWSSystems Manager Parameter Store verwenden, um Anwendungseinstellungen wie Verbindungszeichenfolgen getrennt vom Code Ihrer Anwendung zu speichern. Das NuGet Paket Amazon.Extensions.Configuration. SystemsManager Weitere Informationen zu diesem Schritt finden Sie im Blogbeitrag. NET Hauptkonfigurationsanbieter für AWS Systems Manager | App-Developer |
Aufgabe | Beschreibung | Erforderliche 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. Das VermächtnisASP. NETDie Anwendung validiert weiterhin die Benutzeranmeldedaten und gibt das Cookie aus, während sie modernisiert ASP ist. NET Die Kernanwendung validiert das Cookie. Anweisungen und Beispielcode finden Sie im GitHub Beispielprojekt | App-Developer |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie ein Docker-Image mit Visual Studio. | In diesem Schritt erstellen Sie eine Docker-Datei mithilfe von Visual Studio for. NET KernnetzAPI.
Visual Studio erstellt eine Docker-Datei für Ihr Projekt. Eine Docker-Beispieldatei finden Sie unter Visual Studio Container Tools for Docker | 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.
| App-Developer |
Zugehörige Ressourcen
Führen Sie einen ausASP. NET APICore-Web-Docker-Container auf einer Amazon EC2 Linux-Instance (AWSPrescriptive Guidance)
Zusätzliche Informationen
Die folgenden Tabellen enthalten Beispiele für Beispielprojekte für eine ältere Warenkorbanwendung und die entsprechenden Projekte in Ihrer modernisierten VersionASP. NET Kernanwendung.
Legacy-Lösung:
Project name | Vorlage für ein Projekt | Target framework |
---|---|---|
Geschäftsoberfläche | Klassenbibliothek | . NETRahmen |
BusinessLogic | Klassenbibliothek | . NETRahmen |
WebApplication | ASP. NETFramework-Webanwendung | . NETRahmen |
UnitTests | NUnitProjekt testen | . NETRahmen |
Geteilt -> Allgemein | Klassenbibliothek | . NETRahmen |
Geteiltes -> Framework | Klassenbibliothek | . NETRahmen |
Neue Lösung:
Project name | Vorlage für ein Projekt | Target framework |
---|---|---|
BusinessLogic | Klassenbibliothek | . NET5,0 |
<Netz >API | ASP. NETKernnetz API | . NET5,0 |
<Netz API >. UnitTests | NUnit3 Testprojekt | . NET5,0 |
Geteilt -> Allgemein | Klassenbibliothek | . NET5,0 |
Geteilt -> Framework | Klassenbibliothek | . NET5,0 |