Creation d'une appli Web a partir du code C# Winforms - C#/.NET managed - Programmation
Marsh Posté le 22-04-2011 à 22:29:45
Sans rien voir de l'appli, ça va être dur de répondre .
Pour rester dans les généralités, un portage en ASP.Net (webform, MVC) ou éventuellement Silverlight selon les besoins est peut être envisageable, et sera plus ou moins complexe en fonction du service rendu par l'application (une appli temps réelle avec une GUI ultra riche et en 3D ne se portera pas exactement comme un machin avec des zones de saisie et des boutons de validation qui suivent un process séquentiel) et de la façon dont elle a été développée (conception objet/modulaire avec séparation claire des couches dans des assemblies ou gros tas de code vomi dans la form)
Marsh Posté le 12-05-2011 à 06:25:05
Bonjour TotalRecall,
Je suis surpris de ne pas avoir vu ton message auparavant. ASP.Net ou Silverlight sont deux propositions auxquelles j'avais pense avec mon équipe. L'application C# est a la fin du développement, surement fini avant la fin du mois.
Pour répondre a ta question, l'appli n'est pas en 3D et il s'agit plutôt de formulaires a remplir pour l'utilisateur. A partir des données collectées, on génère des calculs qui estime la profitabilité d'un projet d'investissement immobilier, ainsi que le budget et la comptabilité de ce projet. Certains graphiques (type en barre, camembert, etc) vont être présents. Est ce assez clair? Je n'ai pas encore regarder le code de ce projet, 3 développeurs s'en chargent pour le moment mais je pense que la conception est plutôt bonne...
Merci,
LB
Marsh Posté le 12-05-2011 à 19:58:54
il existe bien des choses, mais va vite atteindre ces limites
http://www.codeproject.com/KB/cs/w [...] forms.aspx
Marsh Posté le 12-05-2011 à 20:00:52
il aurait beaucoup plus simple de convertir une application WPF 4 en application Silverlight 4.Mais bon, c'est trop tard ;-)
Marsh Posté le 13-05-2011 à 06:59:03
Bonjour Moi23372,
Apres quelques recherches supplementaires, j'ai trouve plusieurs solutions pour le probleme actuel - donner la possibilite a l'utilisateur d'utiliser le logiciel meme s'il ne l'a pas installe:
- Convertir nos Winforms en ASP.Net Web forms en utilisant le code de CodeProject (gratuit mais rudimentaire) -> http://www.codeproject.com/KB/cs/w [...] forms.aspx
- Utiliser le fichier DLL et developer le front end (pas vraiment sur de comment faire)
- Convertir nos WinForms en ASP.NET Web Forms avec Form Suite 4 (payant et cher) -> http://www.suite4.net/products/default.aspx
- Donner la possibilite a l'utilisateur d'acceder au serveur avec "remote control" ou une version du logiciel sera installe (pas tres satisfaisant mais rapide a faire)
- utiliser Visual WebGUI -> http://www.visualwebgui.com/tabid/677/Default.aspx (solution envisageable)
- recreer toute l'application en ASP.NET (long)
- mettre le tout dans un control et le charger dans un projet web -> http://www.beansoftware.com/ASP.NE [...] -Form.aspx (bofbof)
- recreer toute l'application en WPF et convertir le tout en Silverlight (trop long et pas evident de convertir entre WPF et Silverlight, d'apres ce que j'ai lu)
- utiliser VisualJS http://visualjs.net/ (solution envisageable)
Quelle est ton opinion sur la solution a adopter?
Merci,
LB
Marsh Posté le 16-05-2011 à 09:31:09
Quelqu'un a une opinion pour obtenir une solution correcte et de facon rapide ou des commentaires sur VisualWebGUI? VisualJS?
Merci,
LB
Marsh Posté le 31-05-2011 à 11:27:38
J'ai trouve d'autres alternatives qui sont:
- Morfik -> http://en.wikipedia.org/wiki/Morfik
- Script# -> http://projects.nikhilk.net/ScriptSharp
- Sharpkit -> http://sharpkit.net/
Quelqu'un a deja teste certaines de ces solutions? ou Visual WebGui?
Merci,
LB
Marsh Posté le 08-06-2011 à 18:03:59
Bonjour,
Ton problème n'est pas anodin, c'est même un problème récurent depuis que les applications "Web" existe. Pour faire simple, il n'y a pas de solutions rapides lorsque ton application est trop avancée et que tu n'a pas respecté certaines règles de découpage applicatif.
Mon conseil (il ne va pas te plaire, mais si tu fais un effort, tu me remercieras), c'est de revoir tout le découpage de ton application en minimum 3 couches.
1: couche accès base de donnée
Dans une ou plusieurs assemblies, tu regroupes tout les accès BDD (appel proc stock, etc) qui vont alimenter des objets "entité" (des objets métiers)
2: couche "métier" (business)
Idem, à regrouper dans une ou plusieurs assemblies, là, tu regroupes tous tes traitements "Métier" (calculs, validations fonctionnelles, etc...)
3: La couche présentation
Cette couche sera finalement l'IHM de ton application, elle ne prendra en compte que les transitions entre les écrans et les contrôles de surfaces. Cette couche ne communiquera QUE avec la couche Business. le nombre de lignes dans chaque méthode devra être minimaliste (toute la partie applicative se trouvant déportée dans la couche business)
L'intérêt donc de ce découpage, est qu'il suffit de simplement décliner la couche présentation dans différente techno et si le découpage en couche est bien respecté l'impact est minime.
Sinon, n'éspère pas pouvoir porter une version Winforms en Webforms rapidement et simplement, car le système évenementiel est très différent entre les 2 technologie, je ne parle même pas de la persistance utilisateur.
Mon petit conseil supplémentaire serait de baser la couche de présentation sur MVC (utilisable en Winforms/WPF/Webforms/Silverlight) histoire de découpLer encore un peu plus la partie présentation de la logique de présentation.
Concernant les framework Visual WebGUI et consorts... Ils sont plutôt sympas, mais il ne convertissent pas le Winforms en Webforms, ils permettent au mieux de simuler un comportement évenementiel similaire a winforms en Web.
Marsh Posté le 12-06-2011 à 10:19:21
Les convertisseurs que tu cites ne sont certainement pas viables pour générer un code maintenable et sûr sur une appli un tant soi peu riche.
Les problématique (gestion événementielle, spécificités des contrôles, problème de persistance, problème de concurrence liés aux contexte multi utilisateur) sont trop nombreuses et trop complexes pour qu'un outil miraculeux les résolve pour toi en quelques clics de convertisseur magique.
Par exemple pour l'aspect persistance, si toutes les écritures en base se font par des actions atomiques sans transactions ni utilisation d'un objet persistant (requêtes unitaires), l'adaptation est plus facile, mais si vous êtes passé par un ORM avec un context commun utilisé tout au long d'un cycle d'action, ce qui fonctionne en mono utilisateur (winform) donnerait des résultats délirants en webform, car tous les utilisateurs partageraient le même contexte (quand l'un fait une action, toutes celles en attente de validation dans la pile du contexte pour les autres sont exécutées en même temps ).
Pareil pour les subtilités introduites par le côté stateless du web : en winform on peut mettre dans les classes de ses forms tout un tas de variables privées locales au formulaire actuel, fais un peu la même chose en webform, tu risques de te demander ce qui arrive à tes valeurs. Du coup on utilise la session, le viewstate en appel direct ou au travers des contrôles, etc. Comment un outil pourrait gérer tout ça intelligemment ?
Tu parles de toi et ton équipe, mais vu vos interrogations assez inquiétantes, sans connaître l'importance du projet, je crois qu'il va vous falloir une source d'info plus solide qu'un forum et tes recherches personnelles si tu veux aller quelque part .
Marsh Posté le 13-10-2011 à 12:23:54
Bonjour,
J'ai un bout de code qui marche assez bien pour générer mes aspx à partir de mes winforms. Si ça vous intéresse, contactez moi et je vous l'envoie... (mais je travaille en VB, pas en C...)
Marsh Posté le 22-04-2011 à 11:10:50
Bonjour,
Nous avons commence a développer une application en C# basee sur des WinForms et nous voulons faire une application web qui accede a la meme base de donnee et qui y ressemble comme deux gouttes d'eau a la premiere application, au cas ou nos futurs clients n'ont pas installe l'application peuvent quand meme acceder aux informations de la base de donnee, etc.
Quel est le meilleur moyen d'y arriver en evitant de tout recreer l'application? Est ce possible de creer la nouvelle appli Web a partir du code C#?
Merci
LB