Portierung der C # -Windows-Benutzeroberfläche auf die C # -Webanwendung :wie funktioniert es sofort für Win, Mac und Linux?

StackOverflow https://stackoverflow.com//questions/9648555

  •  10-12-2019
  •  | 
  •  

Frage

Ich möchte eine Anwendung neu schreiben, die derzeit als Windows-GUI in C # funktioniert.Das Problem ist, dass es unter Windows gut funktioniert, aber aufgrund von GUI-Problemen mit Mono nicht für Mac und Linux geeignet ist.

Meine Idee war also, mit C # fortzufahren (erforderlich wegen eines wesentlichen Unterprogramms, das C # ausführen muss und nicht portiert werden kann) und zu versuchen, es als Webanwendung neu zu schreiben, auf die jeder Benutzer unter Windows, Mac oder Linux problemlos zugreifen kann und lass es funktionieren.

Es ist auch wichtig, dass meine Anwendung "out-of-the-box" funktioniert, da sie eine hohe Zugänglichkeit anstrebt.

Ich habe nach Lösungen gesucht wie :

  • KajakHTTP POST-Daten werden jedoch nicht unterstützt!(wird für eine Web-GUI benötigt)
  • XSP2 von Mono und mache eine ASP.NET MVC-Web-App, aber funktioniert es wirklich mit meiner Web-App, um eine sofort einsatzbereite Anwendung zu erstellen?

Haben Sie alternativ eine andere Idee für mich, eine C # -Webanwendung für die Endbenutzer sofort einsatzbereit zu haben?Das einzige, was benötigt wird, wäre die Installation von Mono auf Mac und Linux.

Vielen Dank für Ihre Hilfe.

BEARBEITEN 1 :Mir ist klar, dass ich nicht alle Aspekte richtig erklärt habe.Tatsächlich gibt es in meinem Projekt 2 Anwendungen :

  • Die Kernanwendung, die in C # geschrieben ist und zu groß ist, um portiert oder neu geschrieben zu werden, und daher Mono für die Ausführung auf Mac und Linux verwenden muss
  • Meine GUI-Anwendung verwendet Windows Forms, das ebenfalls in C # geschrieben ist und die Kernanwendung steuert

Mein Ziel ist es, meine GUI-Anwendung in eine Web-App-Anwendung zu konvertieren, damit der Windows Forms-GUI-Ärger unter Mac und Linux nicht mehr auftritt.

War es hilfreich?

Lösung

ist es erforderlich, dass Ihre Kernanwendung auf dem Client ausgeführt wird?

Wenn nicht, dann ist der beste Ansatz, alles als Web (ASP.NET) -Anwendung neu zu schreiben, der auf einem Windows-Server ausgeführt wird. Benutzer auf allen Ihren Zielplattformen werden dann über einen Webbrowser auf diese App zugreifen.

Wenn ja, dann ist eine Web-App keine gute Idee. Sie möchten wirklich keinen Webserver auf Ihren Kunden benötigen. Sie haben zwei Möglichkeiten:

    .
  • werfen Sie einen Blick auf die GUI-Toolkits für Mono verfügbar und wählen Sie einen, der auf allen verfügbar ist Ihre Zielplattformen, um es zu vermeiden, unterschiedliche Frontends für jede Ihrer Plattformen zu haben.
  • Um das beste Benutzererfahrung auf allen Plattformen zu gewährleisten, sollten Sie das native GUI-Toolkit für jede der Plattformen auswählen und ein anderes Frontend für sie schreiben: entweder mithilfe von Mono oder mithilfe eines nativen Entwicklungsumfelds, solange Ihre Kernanwendung eine Schnittstelle enthält das kann von ihm aufgerufen werden (z. B. Befehlszeile oder ähnliches).

Andere Tipps

Dies ist eine doppelte Frage, aber ich habe keine Zeit, das Duplikat zu finden.

Kurz gesagt, die Antwort ist:tu das nicht.Sie können eine Desktopanwendung nicht eins zu eins in eine Webanwendung übersetzen:die beiden Paradigmen sind zu unterschiedlich.

Ich empfehle stattdessen, Ihre aktuelle Anwendung umzugestalten, um alle Abhängigkeiten von der GUI zu entfernen.Schreiben Sie dann eine völlig neue Webanwendung, um die Anforderungen zu erfüllen, und lassen Sie die Webanwendung den Code aufrufen, den Sie aus der Desktop-Anwendung überarbeitet haben.

Seien Sie sich des großen, versteckten Unterschieds zwischen den beiden Plattformen bewusst:die Webanwendung wird auf einem Server ausgeführt.Es wird von mehreren Benutzern gleichzeitig und von mehreren Threads gleichzeitig verwendet.Achten Sie beim Umgestalten darauf, dass Sie jeden Code notieren, der für den Unterschied empfindlich ist.Zum Beispiel Code, der verwendet static Mitgliederfelder könnten jetzt in der Desktop-Anwendung funktionieren, da jeweils nur ein Benutzer vorhanden ist.In einer Webanwendung das static wird für alle Benutzer und alle Threads freigegeben.

Das ist vielleicht nicht das, was Sie sich vorgestellt haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top