2009-02-26 4 views
1

Wir haben eine große Suite von Anwendungen, die meisten sind C# 1.1, aber mindestens 10 größere sind in VB6. Wir führen ein Projekt durch, um die VB6-Anwendungen auf .NET 3.5 zu bringen.MVP/MVC vs traditionelle n-Tier-Ansatz für Winform-Anwendungen

Alle C# 1.1-Apps werden mit einem traditionellen n-Tier-Ansatz geschrieben. Es gibt keine Architektur/Trennung zur UI-Ebene. Der Großteil des Codes reagiert nur auf Ereignisse und geht von dort aus. Ich würde sagen, dass es unter dem Gesichtspunkt der Wartbarkeit ziemlich gut war und es einfach ist, Code zu befolgen und neue Apps zu entwickeln.

Da wir VB6-Anwendungen portieren, war die anfängliche Überlegung, dass wir uns an das bestehende Muster (z. B. n-Tier) halten sollten.

Ich frage mich, ob es sich lohnt, das Muster zu brechen und VB6-Anwendungen mit dem MVP/MVC-Muster zu tun? Sind MVC/MVP Winform-Apps wirklich einfacher zu warten? Ich arbeitete an einem MVC-basierten Projekt und hatte nicht das Gefühl, dass es überhaupt leichter zu warten war, aber das ist nur ein Projekt.

Was sind einige der Erfahrungen und Ratschläge da draußen?

Antwort

4

Kumpel, wenn etwas für Sie funktioniert, sind Sie damit vertraut, und Ihr Team ist mit den Spezifikationen einverstanden. Warum musst du dich ändern?

MVC/MVP hört sich gut an ... Warum arbeite ich noch selbst an n-Tier?

Ich denke, bevor Sie Ressourcen für die tatsächliche Entwicklung auf diese neue Art der Programmierung verpflichten ... Sie sollten überlegen, ob es für Ihr Team funktioniert.

1

Es bewegt sich eine dünne Schicht von Code, den Sie wahrscheinlich noch auf der Benutzeroberfläche haben. Ich sage dünn, weil Sie von Ihrer Beschreibung wahrscheinlich woanders viel Code haben. Sie erhalten die Möglichkeit, diese dünne Codeebene im Unit-Test zu testen.

Update 1: Ich empfehle nicht, während des Upgrades zu rearchieren, der zusätzliche Aufwand ist am besten, um automatisierte Tests (Einheit/Integration/System) zu bekommen - da Sie das Upgrade testen müssen sowieso. Sobald Sie die Tests durchgeführt haben, können Sie schrittweise Änderungen an der Anwendung vornehmen, indem Sie Tests durchführen, um die Änderungen zu bestätigen.

3

Wenn Sie die VB6-Anwendungen gegen eine vollständige Neufassung portieren, würde ich vorschlagen, sich auf Ihr Pri 1-Ziel zu konzentrieren - so schnell wie möglich in die .Net-Welt zu gelangen. Wenn Sie das tun, hat das für Ihre Organisation viele Vorteile.

Sobald Sie dort sind, können Sie bewerten, ob es für Sie von Vorteil ist, in die Neustrukturierung dieser Anwendungen zu investieren.

Wenn Sie vollständig schreiben, würde ich sagen, nehmen Sie den Sprung und gehen für MVP/MVVM gemusterten WPF-Anwendungen. WPF wird dir schönere Bilder geben. Mit dem MVP/MVVM-Muster erhalten Sie Unit-Testability für alle Ebenen, einschließlich der visuellen. Ich gehe auch davon aus, dass diese Apps miteinander verwandt sind, also besteht die Möglichkeit, dass Sie Ihre Modelle und Ansichten tatsächlich wiederverwenden können. (obwohl ich hier vielleicht falsch liege)

0

MVC insbesondere nicht n-Tier-Architektur ausschließen.

Wir haben auch ASP.NET 1.1 Business-Anwendung, und ich finde es ein echter Albtraum zu pflegen. Wenn Event-Handler tun, was sie wollen, vielleicht andere Steuerelemente ändern, vielleicht etwas in Geschäftslogik anrufen, vielleicht direkt mit der Datenbank reden, ist es nur Zufall, dass Software überhaupt funktioniert.

Mit MVC können Sie bei richtiger Verwendung sehen, wie die Daten von der Datenbank zur Benutzeroberfläche und umgekehrt fließen. Es macht es einfacher, die Fehler zu verfolgen, wenn Sie das unerwartete Verhalten haben.

Zumindest ist es so mit meinem eigenen kleinen Projekt.

Ich werde den Punkt noch einmal machen: Welches Muster Sie verwenden, bleiben Sie bei der klaren n-Tier-Architektur. 2-Tier oder 3-Tier, einfach nicht alles in einen großen zusammenhängenden Ball verwirren.

0

"Veränderung - diese Aktivität machen wir die Anspielung auf den Fortschritt." - Dilbert

Im Ernst, nur Ihre Entwicklungsumgebung und Bereitstellungsplattformen auf .NET 3.51 zu bringen, ist ein großer Schritt an und für sich. Ich würde empfehlen, dass Dinge wie Sicherheitsüberprüfungen und Code-Walkthroughs wahrscheinlich kommen sollten, bevor die Anwendung neu gegliedert wird.

MVC und MVVM sind ausgezeichnete Paradiese, insbesondere in Bezug auf die Testbarkeit. Vergiss sie nicht, aber vielleicht solltest du ein Pilotprojekt in Erwägung ziehen, bevor es vollständig angenommen wird.