Web Forms und MVC im selben Webprojekt

8

Ich arbeite in einem großen Legacy-Projekt, das mit ASP.NET Web Forms erstellt wurde, und die Idee, die MVC-Bibliotheken zum selben Projekt hinzuzufügen, wurde herumgeworfen. Ich weiß, dass dies möglich ist (es sind viele Artikel verfügbar), aber ich frage mich, ob / warum dies von jemandem empfohlen wird / wird, der etwas Ähnliches getan hat.

Die Idee ist, dass wir neue Bereiche der Anwendung mit dem neueren MVC-Muster erstellen und die Legacy-Seiten wie immer am Laufen halten können.

BEARBEITEN: Zur Verdeutlichung betrachten wir das MVP-Muster nicht, da es bereits in einigen Teilen dieses Projekts verwendet wird, sondern tun etwas Ähnliches wie in diesem Artikel beschrieben: https://www.simple-talk.com/dotnet/ asp.net/mixing-web-forms-and-asp.net-mvc/

quaz579
quelle
1
Dies ist kein Duplikat. Das MVP-Muster mit Webforms und MVC ist nicht dasselbe. MVP ist ein Muster, mit dem Sie Ihre Website besser testen und Ihre Ebenen besser voneinander trennen können, während Sie weiterhin Web Forms verwenden. MVC ist ein anderes Tier.
Quaz579
1
@gnat, dies ist kein Duplikat dieser anderen Frage. Die andere Frage erwähnt MVC zum einen nicht. Es scheint, als ob Sie ihm sagen, er solle seine Frage bearbeiten, um sie zu klären, weil Sie sich entschieden haben, nicht sorgfältig zu lesen.
Kyralessa

Antworten:

5

Dies ist kein schlechter Weg, um eine Anwendung neu zu schreiben. Dies wäre besonders nützlich für ein langfristiges Umschreiben in Phasen:

  1. Fügen Sie ein "Testprojekt" hinzu, das CodedUI-Tests (oder Watin oder Selenium) verwendet, um die WebForms-Anwendung über den Browser zu testen. Sie können auch SpecFlow verwenden, um Ihre Testfälle zu definieren. Ich habe dies verwendet, um einen großen Einfluss auf eine WebForms-Anwendung zu haben.

  2. Nachdem Sie die WebForms-Anwendung gut getestet haben, können Sie mit der nächsten Phase des Refactorings beginnen: Verschieben gemeinsamer Komponenten in eine separate Klassenbibliothek. Hier können Ihre Modelle und die Datenzugriffsschicht erstellt werden. Sie können Ihren WebForms-Anwendungen einen Verweis auf diese Bibliothek hinzufügen. Die Tests, die Sie in Phase 1 geschrieben haben, stellen sicher, dass Sie nicht gegen bestehende Geschäftsregeln verstoßen

  3. Portieren Sie die Funktionalität auf Ihre MVC-Anwendung und ändern Sie Ihre Tests, um die MVC-App und nicht die WebForms-App zu verwenden.

Die Schritte 1 und 2 könnten gleichzeitig angegangen werden. Sie können sogar mit Schritt 3 beginnen, sobald Sie eine gesamte Funktion getestet haben und die gemeinsamen Komponenten von der WebForms-Anwendung entkoppelt sind.

Teilen Sie die Arbeit in Hauptfunktionen auf. Wenn eine Funktion in der MVC-Anwendung unterstützt wird, fahren Sie sie in der WebForms-Anwendung herunter. Es wird schließlich eine ausgehöhlte Hülle seines früheren Selbst, bis Sie den Code alle zusammen entfernen können.

Greg Burghardt
quelle
1
Dies ist eine großartige Strategie im Konzept, aber es wird wahrscheinlich Jahre dauern, bis alle Funktionen einer Anwendung dieser Größe auslaufen (diese Codebasis ist mindestens 8 Jahre alt und besteht aus einem Team von ~ 20 Entwicklern). Mich interessiert mehr, wie gut Webforms und MVC im selben Projekt zusammenarbeiten.
Quaz579