Wir haben eine Webanwendung, die im klassischen ASP entwickelt wurde und sich über 5 Jahre zu ihrer aktuellen Form entwickelt hat, die Hunderte von Seiten, eine riesige Datenbank und mehr als 10000 aktive Benutzer umfasst, die täglich mindestens mehr als 10 Seiten durchgehen.
Jetzt wollten wir es auf die neueste Version von .net aktualisieren. Ursprünglich dachten wir, die gesamte App neu zu schreiben, aber nach der Analyse des Szenarios stellten wir fest, dass dies keine praktikable Option ist, die auch von vielen Experten nicht empfohlen wird. Wir haben uns noch nicht entschieden, wie wir es anders machen sollen, aber wir haben uns Gedanken darüber gemacht, wie wir das Umschreiben von Gesichtern erreichen können.
Option 1: Wir dachten daran, die Hauptmodule in dieser Anwendung zu identifizieren und nacheinander neu zu schreiben, indem wir die Anwendung in verschiedene Ebenen wie Datenbank (vorhanden), Geschäftslogik und Ansicht aufteilen. Auf diese Weise werden neu entwickelte Module zu bestehenden Systemen hinzugefügt und neue Seiten ersetzen alte Seiten in diesem bestimmten Modul. Gleichzeitig können wir die neuen Schichten neben dem alten System testen und sie freigeben, sobald wir uns sicher fühlen. Wir haben auch überlegt, eine API-Struktur für die Geschäftslogik zu entwickeln, auf die von view als externe Anwendung zugegriffen werden kann.
Option 2: Im Moment haben wir ein einfaches Modul erstellt und es in einer klassischen ASP-Seite über einen IFrame verwendet, obwohl das Senden von Daten zwischen klassischem ASP und neuer Seite im IFrame ziemlich mühsam war.
Dies ist gerade in der Planungsphase, wie wir das Umschreiben der gesamten Anwendung erreichen sollen, ohne die Benutzerbasis zu stören.
Ich möchte Ansichten, Meinungen und Vorschläge anderer Programmierer erhalten, wenn wir uns in einem solchen Szenario nähern sollten. Wenn jemand mit einem solchen Szenario konfrontiert ist, teilen Sie bitte auch Ihre Meinung mit.
Möchten Sie auch wissen, ob die Verwendung von ASP.net MVC mir dabei helfen wird?
UPDATE : Vielen Dank für beide Antworten, die Sie für Ihre Meinung abgegeben haben. Möchten Sie mehr Informationen zu beiden Optionen erhalten, die ich oben bei der Migration der Anwendung von klassischem asp zu asp.net oder asp.net mvc angegeben habe? Es wäre eine große Hilfe für mich, wenn Sie alle durch Ihre Ansichten, Punkte und Gedanken zur Migration etwas dazu beitragen könnten, anstatt asp.net oder asp.net mvc zu wählen.
quelle
Antworten:
Lassen Sie mich mit den Worten beginnen: "Ich fühle Ihren Schmerz, Brutha." Ich habe das vor drei Jahren durchgearbeitet, und ich wünschte, MVC wäre zu diesem Zeitpunkt gereift, da die von mir entwickelte WebForms-Lösung dem MVC-Modell ziemlich gut ähnelt, ohne dass die Microsoft-Bibliotheken tatsächlich für mich erstellt wurden (natürlich gab es mehrere krasse "Warum zum Teufel?" habe ich das gemacht "unterschiede).
Am Ende habe ich auch iFrames verwendet, um die inhaltlichen Unterschiede mit .Net als übergeordneter Anwendung und classic asp als Slave zu verwalten. Ich habe die Framework-Architektur in .Net entwickelt und implementiert. Die klassischen ASP-Seiten wurden dann aus unnötigen Präsentationsstücken (einschließlich und so weiter) "ausgesondert" und in iFrames geladen. Die Daten wurden dann mit einer benutzerdefinierten Verschlüsselung über die URL übertragen. Um sicherzustellen, dass die Authentifizierung nicht einfach gefälscht werden kann und der Zugriff auf die Seite durch das Knacken der Abfragezeichenfolge nicht möglich ist, haben wir in IIS auch Wildcard-Handler eingesetzt, die die Authentifizierung von .Net vor dem Parsen klassischer ASP-Seiten erzwangen.
Angesichts dessen würde ich empfehlen, sofort zu MVC zu gehen.
Ich mag sowohl WebForms als auch MVC (obwohl ich mit der Einführung von Razor zugeben werde, dass ich ein bisschen voreingenommen gegenüber MVC bin). Beide haben ihren Platz, und ich denke, eine Anwendung wie die von Ihnen beschriebene eignet sich ideal für eine MVC-Implementierung, insbesondere angesichts der "gestaffelten" Art, die Sie bei der Einführung überarbeiteter Anwendungsteile benötigen.
Ich denke, Sie müssen sicherstellen, dass die .Net-Anwendung immer die übergeordnete Anwendung ist, wenn es um Authentifizierung / Autorisierung / Routing usw. geht. Ein Kollege von mir implementierte seine Migration auf eine ähnliche Anwendung mit klassischem asp als übergeordnetem Element, und er hatte eine große Anzahl von Problemen, als es schließlich darum ging, alles wieder zusammenzufügen.
quelle
Wenn Sie sich für ASP.NET MVC entscheiden, wird die Umstellung nicht unbedingt einfacher, und es könnte sogar schwieriger werden. Wenn Sie sich jedoch bereits für dieses großartige Unterfangen entschieden haben, nehmen Sie sich die Zeit, um zu der Plattform zu wechseln, die Ihren Plänen am besten entspricht.
Die Migration zu ASP.NET (ohne MVC) ist "einfacher", da Sie im Allgemeinen direkte Ports Ihrer vorhandenen Logik erstellen können, ohne viel umfangreiches Refactoring durchführen zu müssen, vorausgesetzt, Sie führen nicht viele exotische Aufgaben aus klassisches ASP. Die Ergebnisse sind zufriedenstellend und für die Personen, die mit der Anwendung bereits vertraut sind, relativ vertraut. Sie erzielen Vorteile in dem Sinne, dass jede Anwendung, die von klassischem ASP nach ASP.NET portiert wird, Vorteile erhält .
Die Migration zu ASP.NET MVC wird mehr Arbeit bedeuten. Wahrscheinlich muss Ihr Anwendungsmodell neu strukturiert werden, damit es in das MVC- Muster passt . Dies ist im Allgemeinen eine gute Sache (tm), weil es gute Verhaltensweisen wie die Trennung von Bedenken fördert. Die resultierende Anwendung wird mit Ausnahme der wichtigsten logischen Elemente wahrscheinlich nichts ähneln, was Sie bereits haben. Sie erhalten auch andere Vorteile . Es wird ein großer Kulturwandel sein und es wird einige (Um-) Schulungen des Entwicklungsteams erfordern, um zu verstehen, wie man MVC richtig schreibt.
Es ist zu erwähnen, dass Microsoft WebForms nach ScottGu (Stand vor einem Jahr) nicht aufgibt , aber ich denke nicht, dass es schwierig ist, die Entscheidung zu treffen, eine dieser beiden Technologien auslaufen zu lassen Webformulare.
quelle
Ich stimme voll und ganz zu, dass ASP.NET MVC der richtige Weg ist. Es wird nicht einfach, es wird nicht einfacher sein, aber es ist mit Sicherheit viel zukunftssicherer als WebForms. Obwohl WebForms sicherlich nicht aufgegeben wurde, wird die Wartung von Anwendungen, die sie verwenden, immer schwieriger, je größer die Anwendungen werden.
Ich rate nachdrücklich von der Verwendung von WebForms für "große" Anwendungen ab.
quelle
Ich mag Option 1) (mit MVC) viel besser als Option 2), da Sie die Anwendung schrittweise weiterentwickeln können, ohne die beiden Apps zu sehr miteinander verbinden zu müssen, wie Sie es mit dem iFrames-Ansatz tun würden.
Ich habe einige Erfahrungen mit der Migration einer alten App auf ASP.Net gesammelt und eine der Herausforderungen bestand darin, einige Ressourcen wie den Sitzungsstatus zwischen den beiden Apps auszutauschen. Dies kann gelöst werden, indem eine App die andere auf der Serverseite über die Cookie-Informationen aus dem Browser des Benutzers anruft. Ein anderer Informationsaustausch zwischen Apps kann natürlich auch über URL-Routing und Abfragezeichenfolgen erfolgen, was bei MVC ein natürlicher Ansatz ist.
Das Identifizieren geeigneter Module, die zuerst migriert werden müssen, kann eine Herausforderung sein. Sie können jedoch damit beginnen, alle neuen Funktionen in MVC zu entwickeln, um zu verhindern, dass mehr Dinge in der Garage migriert werden. Wählen Sie dann möglicherweise Abschnitte aus, die einen erheblichen Rückstand an Nacharbeiten oder Fehlerkorrekturen aufweisen, da die MVC-App dann zu einer Art Refactoring wird und Sie Ihr altes System verwenden, um die erwarteten Ergebnisse wie von Ihnen vorgeschlagen zu ermitteln. Vergessen Sie nicht, auch die Testbarkeit von MVC zu nutzen, indem Sie während dieses Refactorings Komponententests und automatische Abnahmetests (z. B. SpecFlow / Watin) hinzufügen. Ein Vorteil der letzteren Art von Tests besteht darin, dass Sie überprüfen können, ob sie das alte System weitergeben, und dann dieselben Tests für diesen und zukünftige Umgestaltungen auf Ihren neuen Code anwenden können.
quelle