10 Stimmen

Ist es möglich, ein WinForm in ein WebForm in .NET zu konvertieren?

Ich hätte es nicht für möglich gehalten, aber ich habe gerade mit einer Kollegin gesprochen, die sagte, dass sie das schon einmal gemacht hat. Nimmt sie mich auf den Arm?

10voto

Joel Coehoorn Punkte 377088

Das ist nichts, was man automatisch tun kann.

Der Trick ist, dass sowohl Winforms als auch Webforms ein Formular mit einer einfachen alten Klasse darstellen. Allerdings sind Instanzen der Klasse in Webforms im Vergleich zu Winforms kurzlebig; jede Instanz der Webforms-Klasse repräsentiert nur eine HTTP-Anfrage und nicht die gesamte Lebensdauer des Formulars, wie bei Winforms. Jedes Mal, wenn Sie ein Ereignis für Ihr Formular in ASP.Net Webforms behandeln, arbeiten Sie mit einer ganz neuen Instanz der Klasse. Microsoft hat sich viel Mühe gegeben, um dieses Problem so gut wie möglich zu lösen, aber letztendlich ist es einfach keine gute Idee, ein Webformular mit denselben Begriffen wie ein Winform zu betrachten.

Sie können definitiv eine Winforms-Anwendung nehmen und sie umschreiben, um Webforms zu verwenden, aber es wird genau das sein: eine Neufassung.

5voto

Colin Mackay Punkte 18052

Ja, das ist möglich. Wenn Sie die Anwendung gut genug entworfen haben, sollte es relativ einfach sein, eine Win Forms-Anwendung in eine Web Forms-Anwendung umzuwandeln, indem Sie einfach die Benutzeroberflächenschicht austauschen und sie ersetzen. Sie verwenden die Logik- und Datenebenen (in denen sich die gesamte Funktionalität befinden würde) wieder.

Natürlich müssen Sie eine neue Benutzeroberflächenschicht von Grund auf neu schreiben, aber wenn die Logikschicht gut genug geschrieben ist, wird das nicht allzu viel Arbeit sein, verglichen mit dem Schreiben der gesamten Anwendung von Grund auf neu.

Es gibt jedoch einige Probleme, selbst wenn Sie eine sehr gut geschriebene Bewerbung haben. Die Logikschicht kann eine zustandsbehaftete Anwendung voraussetzen, in diesem Fall kann sie sich auf "Lazy Loading" verlassen. In einer Webanwendung haben Sie ein zustandsloses Modell, das auf Anfragen und Antworten ausgeführt wird. In diesem Szenario wissen Sie genau, was Sie brauchen, und können nur die Teile laden, die Sie brauchen, und nicht andere Dinge, die vielleicht später benötigt werden... denn später wird ein anderer Anfrage/Antwort-Zyklus stattfinden und alle Daten, die Sie jetzt sammeln, werden gelöscht, sobald die aktuelle Antwort abgeschlossen ist.

Ich habe vor kurzem die Logik einer Anwendung, die ursprünglich ein WinForms in MVC und das größte Hindernis, um eine reaktionsschnelle Geschwindigkeit ist die Tatsache, dass, obwohl einigermaßen gut geschrieben, die logische Schicht vorausgesetzt, eine stateful Umgebung. Die gleiche Anwendung wird auch für WPF (eine andere zustandsbehaftete Umgebung) ohne so viele Probleme neu geschrieben.

4voto

willvv Punkte 8169

Die Umwandlung einer Desktop-Anwendung in eine Web-Anwendung ist mit mehreren Herausforderungen verbunden:

  • Zugang zu Hardware
  • Windows-API-Aufrufe
  • Verwaltung des Anwendungsstatus
  • Zugriff auf das Dateisystem
  • Zugangskontrolle
  • Verwendung von desktop-spezifischen UI/UX/Steuerungen

Es gibt Optionen zur automatischen Konvertierung von Desktop-Anwendungen, die sowohl die Benutzeroberfläche als auch den Code der Anwendung konvertieren können:

Selbst wenn Sie automatisierte Migrationswerkzeuge verwenden, müssen Sie in den meisten Fällen einen beträchtlichen Anteil an manueller Arbeit leisten, damit die Anwendung auf die gleiche Weise funktioniert wie die ursprüngliche.

Einige dieser Tools helfen bei unterschiedlichen Zielen, das erste hilft Ihnen nur bei der Konvertierung der Benutzeroberfläche und in WebForms, die letzten beiden generieren ASP.NET MVC, eines mit einer benutzerdefinierten Laufzeit und einer Reihe von Bibliotheken und das andere mit gängigen HTML/JS/CSS-Bibliotheken wie Kendo MVVM, Kendo UI, AngularJS oder Bootstrap und anderen. Diese Tools bieten eine Lösung, die schneller ist als das Schreiben der Anwendung im Web von Grund auf und bieten Lösungen oder zumindest Richtlinien, um die oben genannten Herausforderungen anzugehen. Es wird jedoch einige Unterschiede zu einer Anwendung geben, die für das Web entwickelt wurde, einfach weil die Architekturen unterschiedlich sind und die Art und Weise, wie der Code für eine Desktop-Anwendung geschrieben wird, normalerweise Dinge voraussetzt, die für eine Web-Anwendung nicht vorausgesetzt werden können.

Haftungsausschluss: Ich arbeite für Mobilize.Net, die WebMAP entwickelt haben.

2voto

RogerG Punkte 258

Ergänzend zu den vorherigen Antworten ist zu beachten, dass es einige Winform-Funktionen gibt, die in einem Webformular einfach nicht vorhanden sind, so dass es davon abhängt, was genau im Winform vorhanden ist.

1voto

Denis Biondic Punkte 7553

Nur noch eine Anmerkung: die Umschreibung hängt davon ab, wie viel Logik in dem Formular selbst steckt. Bei ordnungsgemäß getrennten Anliegen ist es nur eine Frage des Einfügens einer anderen Benutzeroberfläche in die Geschäftsschicht.

Das Problem ist natürlich, dass 90% der Anwendungen nicht mehr als etwas komplexe CRUD UI's sind (keine wirkliche Geschäftslogik)...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X