MVC-Architektur erneut verwenden; Habe zwei UI-Ebenen: ASP.NET MVC und .NET Winforms

8

Obwohl meine Frage abstrakt erscheint, hoffe ich, dass es nicht so ist. Angenommen, ich entwickle eine Anwendung, eine ASP.NET MVC-Site und später bin ich beauftragt, einen Winforms-Client für diese Anwendung zu erstellen, wie viel und wie kann ich aus der vorhandenen Anwendung wiederverwenden?

Ich habe die Modelle definiert, ich habe Controller und Ansichten definiert. Sie alle funktionieren gut.

Jetzt kommt der Chef und bittet um einen Winforms-Client und ich hoffe, dass ich die Modelle und die Controller wiederverwenden kann (vorausgesetzt, ich lege sie in verschiedene Assemblies) und verwende nicht nur die Ansichten (ASPX-Ansichten).

Kann das gemacht werden? Wie?

    
Andrei Rînea 23.09.2008, 22:39
quelle

2 Antworten

10

Ich habe das vorher gemacht, nicht mit asp.net MVC, sondern mit reinen asp.net Webformularen. Ich habe ein selbstgewähltes MVP (Model-View-Presenter) -Muster verwendet, und das absolut Wichtigste, damit der Presenter (== Controller in Ihrem Fall) in einer WinForms-App verwendet werden kann, war, dass er nichts mit system.web zu tun

Das erste, was Sie tun müssen, ist die Einführung von Interfaces, um Anfragen, Response, Web usw. einzubinden und jeden Presenter diese Interfaces über Dependency Injection annehmen zu lassen (oder sie den Presentern mit einer anderen Technik zur Verfügung zu stellen) ), dann, wenn der Moderator diese statt der eigentlichen system.web Zeug verwendet.

Beispiel:

Stellen Sie sich vor, Sie möchten die Kontrolle von Seite A auf Seite B übertragen (in Ihrer Winforms App möchten Sie vielleicht das Formular A schließen und dann das Formular B öffnen).

Schnittstelle:

%Vor%

Web-Implementierung:

%Vor%

winforms-Implementierung:

%Vor%

Jetzt der Presenter (Controller in Ihrem Fall):

%Vor%

Ich habe die MVC-Implementierung von asp.net nicht im Detail betrachtet, aber ich hoffe, dies gibt Ihnen Hinweise darauf, dass es wahrscheinlich eine Menge Arbeit sein wird, um das Szenario, nach dem Sie suchen, zu ermöglichen.

Sie sollten stattdessen in Erwägung ziehen, zu akzeptieren, dass Sie den View und Controller für die verschiedenen Plattformen neu codieren müssen, und sich stattdessen darauf konzentrieren, Ihre Controller extrem dünn zu halten und den Großteil Ihres Codes in eine Serviceebene zu integrieren geteilt.

Viel Glück!

    
zadam 23.09.2008, 22:58
quelle
2

Sieh dir das Northwind-Starterkit an (lass dich nicht vom Northwind-Bit abschrecken) - das hat verschiedene GUIs an eine geschichtete Architektur mit MVC und Winforms angeschlossen.

Es macht genau das, was Sie erreichen wollen.

    
RichardOD 15.07.2009 13:32
quelle