2009-08-24 18 views
2

Ich arbeite derzeit an einer Website mit hoher Zugriffsrate für die Online-Suche.Ein komplexes WebForms-Projekt bereinigen

Sie haben verschiedene Änderungen, die sie im Laufe der Zeit implementieren möchten, und sie haben angegeben, dass sie schließlich möchten, dass die Site in ASP.NET MVC erneut ausgeführt wird.

Derzeit ist die Website ein ASP.NET-WebForms-Projekt; echte ASP.NET-Steuerelemente werden jedoch selten verwendet. Stattdessen gibt es viele serverseitige Tags - d. H. <% ...%>. Der Code in diesen Tags ist normalerweise ein Aufruf einer statischen Methode in einer statischen Klasse oder eines C# -Code-Fragments, das HTML generiert.

Viele der statischen Methoden generieren HTML, indem sie Text an einen Zeichenfolgengenerator anhängen und ihn als Zeichenfolge zurückgeben.

Ich verstehe das Konzept einer "Helper" -Methode, aber ich mag nicht die Idee der HTML gerendert wird, indem es an eine String-Variable verkettet. Ich denke, sie wären besser dran mit "Partials".

Die Sache, die mich betrifft, ist, dass es eine ziemlich komplexe Website ist, und ich bin mir nicht sicher, ob eine vollständige Neuerstellung der Website in ASP.NET MVC eine gute Idee ist.

Trotz der schlechten Struktur ist es nicht so schwierig, die neuen Funktionen hinzuzufügen, die angefordert werden. (Vielleicht, weil ich in der Vergangenheit Erfahrung mit schwierigem Code hatte).

Aber ich denke, es gibt ein Risiko, dass irgendwann in der Zukunft eine Anforderung kommen wird, die sehr schwierig zu implementieren sein wird, wenn wir nicht die Code-Basis vollständig bereinigen.

Ich möchte diese Frage da draußen stellen und sehen, ob jemand ein ähnliches Problem konfrontiert hat, und wie Sie damit umgegangen sind.

Und was denken Sie darüber, das Re-Build als 20% -iges Seitenprojekt zu machen? Gibt es Nachteile, dies zu tun?

Antwort

1

Wow, das ist ein Projekt.

Ich persönlich denke, jede Website in ASP.Net geschrieben werden muss komplett neu gemacht werden, soweit die Benutzeroberfläche betroffen ist. MVC macht es sehr viel anders.

Ihre Geschäftslogik auf der anderen Seite sollte in Ordnung sein, obwohl ich denke, solange Sie Trennung von Bedenken haben und es nicht an die Benutzeroberfläche gebunden ist.

Der Datenzugriff sollte in Ordnung sein und wahrscheinlich nur minimal berührt werden. Aber das hängt wiederum davon ab, wie stark Ihre Website gebunden ist.

Ich denke, der beste Ansatz besteht darin, einige Zeit damit zu verbringen, zu schauen, wie MVC Geschäfte macht und eine kritische Analyse dessen, was es zu konvertieren und dann beginnen würde, alle Schichten über die UI in Vorbereitung zu konvertieren.

Holen Sie sich Ihre Grundlage an Ort und vielleicht sogar, wenn möglich, verwenden Sie das MVC-Framework bereits. Nochmals, nur wenn du kannst und nur wenn machbar.

Dies als ein Nebenprojekt zu tun würde funktionieren, denke ich, weil Sie einige Ihrer Bibliotheken nehmen und beginnen können, sie in Vorbereitung für die mvc-Konvertierung zu konvertieren.

Aber denken Sie daran, dass sobald Sie ein Projekt/eine Ebene konvertiert haben, dass Sie es sonst umsetzen, es riskiert, vergessen zu werden oder Änderungen an der anderen Ebene vorgenommen werden, die dann in die neue Ebene codiert werden müssen usw. Du kennst die Fallen.

Wie für die UI, das wird das große sein, vor allem, wenn Sie viele ASP-Steuerelemente verwenden. Sie möchten möglicherweise viel Zeit mit der Auswertung der Benutzeroberfläche verbringen und eine Liste von Steuerelementen erstellen, die Sie entweder ersetzen oder schreiben müssen. Dann können Sie beginnen, ein Muster zu sehen und eine gewisse Konsistenz zu erreichen.

Wenn Sie viel Code in Ihrem Code hinter sich haben, möchten Sie vielleicht mit dem Verschieben auf eine andere Ebene beginnen, da dies später beim Erstellen von Controllern hilfreich ist. Sie können dann Ihre neue Ebene instanziieren und alles sollte gut sein .

Das ist alles, was ich von Kopf hoch denken kann. Ich bearbeite oder kommentiere, wenn ich an Dinge denke.

Hoffe, das hilft.

0

Wenn ich dieses Projekt habe und ich gebeten wurde, es von Grund auf neu zu erstellen, werde ich MVC nicht verwenden, um die Benutzeroberfläche zu rendern, ich werde Web API/OData verwenden, um das gesamte Backend zu hosten, und jedes gute Frontend verwenden Zeichnen Sie die Benutzeroberfläche, Angular wird eine sehr gute Option sein.

Wenn Sie es als Nebenprojekt verwenden, ist es nur dann gut, wenn das Tempo der Änderungen und neuen Funktionen im alten Projekt geringer ist als das im neuen Projekt ausgeführte Programm Irgendwann wirst du den alten Code einfrieren müssen.

Sie müssen auch jede Datenmigration in Betracht ziehen, wenn Sie die Datenspeicheroption ändern müssen.