Le portage de Windows en C# GUI C#, web app :comment faire pour le faire fonctionner out-of-the-box pour Win, Mac et Linux?

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

  •  10-12-2019
  •  | 
  •  

Question

Je voudrais réécrire une application qui fonctionne comme une interface utilisateur Windows en C#.Le problème est, il fonctionne aussi bien sur Windows, mais n'est pas adapté pour Mac et Linux à cause de GUI questions avec Mono.

Donc, mon idée était de continuer avec C# (nécessaire en raison d'un sous-programme qui doit s'exécuter en C# et ne peut pas être porté) et essayer de le réécrire sous la forme d'une application web que n'importe quel utilisateur sur Windows, Mac ou Linux peut accéder facilement et de le faire fonctionner.

Il est également important que ma demande reste travail "out-of-the-box", car il vise un haut niveau d'accessibilité.

J'ai cherché des solutions comme :

  • KayakHTTP mais il ne prend pas en charge les données POST !(nécessaire pour une interface web)
  • XSP2 à partir de Mono et de faire un ASP.NET MVC web app, mais il va vraiment travailler avec mon application web pour faire un out-of-the-box de l'application ?

Sinon, avez-vous une autre idée pour moi d'avoir un C# web app de travail hors de la boîte pour les utilisateurs finaux ?La seule chose nécessaire serait d'installer Mono sur Mac et Linux.

Merci beaucoup pour votre aide.

EDIT 1 :Je me rends compte que je n'ai pas expliqué tous les aspects correctement.En fait, il y a 2 candidatures dans mon projet :

  • L'application de BASE qui est écrit en C# et est trop grand pour être porté ou réécrit et doit donc être Mono pour fonctionner sur Mac et Linux
  • Mon application de l'interface utilisateur à l'aide de Windows Forms qui est écrit en C# aussi, et les contrôles de l'application de BASE

Mon but est de convertir mon application de l'interface utilisateur dans une application web demande si il n'y a plus les Formulaires Windows GUI tracas sur Mac et Linux.

Était-ce utile?

La solution

est-il nécessaire que votre application principale fonctionne sur le client?

Sinon, la meilleure approche est de réécrire tout comme une application Web (ASP.NET) qui va s'exécuter sur un serveur Windows. Les utilisateurs de toutes vos plateformes cibles accéderont à cette application via un navigateur Web.

Si oui, une application Web n'est pas une bonne idée. Vous ne voulez vraiment pas nécessiter un serveur Web sur vos clients. Vous avez deux possibilités:

  • Jetez un coup d'œil au Toolkits GUI Disponible pour mono et sélectionnez un qui est disponible sur tous vos plates-formes cible pour éviter d'avoir des extrémités avant différentes pour chacune de vos plates-formes.
  • Pour assurer une meilleure expérience utilisateur sur toutes les plateformes, vous devez choisir la boîte à outils de l'interface graphique native pour chacune des plates-formes et écrire une extrémité frontale différente pour eux: utilisez Mono ou à l'aide d'un environnement de développement natif tant que votre application principale a une interface. qui peut être accessible de celui-ci (par exemple, ligne de commande ou similaire).

Autres conseils

C'est une double question, mais je n'ai pas de temps pour trouver le double.

Brièvement, la réponse est:ne pas le faire.On ne peut pas traduire une application de bureau pour une application web sur un seul:les deux paradigmes sont trop différents.

Je conseille plutôt la refactorisation de votre application en cours pour supprimer toutes les dépendances sur le GUI.Ensuite, écrire une toute nouvelle application web pour répondre aux exigences, et d'avoir l'application web appeler le code vous remaniée de l'application de bureau.

Être conscient de la grande, caché différence entre les deux plates-formes:l'application web doit être en cours d'exécution sur un serveur.Il sera utilisé par plusieurs utilisateurs en même temps, et par plusieurs threads en même temps.Pendant que vous êtes refactoring, assurez-vous de noter le code qui serait sensible à la différence.Par exemple, le code qui utilise static membre de champs puissent travailler dans l'application de bureau car il est un seul utilisateur à la fois.Dans une application web, qui static sera partagée entre tous les utilisateurs et tous les threads.

Cela peut ne pas être ce que vous aviez à l'esprit.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top