D'abord, je tiens à préciser, je ne cherche pas un type de message «ma technologie est meilleure que la vôtre»; C'est un cas réel et j'ai été confronté à cette décision. Dans cet esprit, laissez-moi vous expliquer:WebForms/MVC à un programmeur Windows Forms
Nous avons une application WinForms. Cela a commencé au début de .NET 1.0 mais la première version d'expédition utilisait .NET 1.1. Il sont couches (comme BusinessLayer.dll, Datalayer.dll, Framework.DLL, etc.) mais à un certain point au cours du "long" cycle de développement de cette application, la couche "présentation" (Win Forms) a été infectée avec certains code, donc la "séparation entre le code et la présentation avec le code derrière" est une sorte de mythe. Mauvaises pratiques ou peu importe, la vérité est que l'application est là et ça marche.
Les années ont passé et nous avons eu .NET 2.0, nous avons lentement migré et il a surtout travaillé, a dû changer quelques appels ici et là. La dernière version a fait la même chose, mais pour .NET 3.5sp1. Nous avions besoin d'une sorte de service Web, et avons décidé d'utiliser WCF à la place. Ça fonctionne bien. Mais malgré toutes ces mises à niveau .NET, la plupart des bases de code de l'application sont toujours les mêmes que celles du rock and roll d'il y a 5 ans. Nous utilisons Gentle.NET (ancien et non maintenu maintenant) pour nos dataobjects (c'était une bénédiction il y a 5 ans!). Notre couche de présentation, les winforms, sont "jolies" car nous utilisons 90% de contrôles personnalisés complètement gdi +
(autant que possible sans avoir à pirater le WinAPi). L'application est tactile (c'est-à-dire qu'elle utilise l'encre mais ne dépend pas de cela), mais les boutons, les étiquettes, etc., tout est "conçu" pour être utilisé avec un appareil tactile. (TabletPC ou écran tactile). Bien sûr, certains utilisateurs utilisent le clavier/la souris.
Avec tout cela à l'esprit, et avec tout ce fuzz web2.0 et Internet (plus les messages de Jeff;)), nous envisageons la possibilité de réécrire l'application, mais en utilisant une technologie web. L'idée est évidemment d'apporter plus de disponibilité pour nos clients (ils peuvent utiliser le système quand et où ils veulent), et moins de maintenance (nous pouvons mettre à jour et c'est une mise à jour instantanée pour tous), etc. Internet vs WinApp thingy. Le problème est que, étant donné que c'est l'industrie des soins de santé, tous nos clients ne seraient pas disposés à "déplacer" leurs bases de données vers nos serveurs, ce qui est acceptable, et nous obligerait à installer un serveur web/base de données serveur dans leurs propres serveurs afin qu'ils aient leur propre copie. Pas un gros problème (sauf que nous aurions à les mettre à jour manuellement mais ce n'est pas un problème, étant donné que nous mettons à jour les applications Win32 depuis 5 ans maintenant!).
Maintenant, revenons à la "question" principale.
L'équipe a peu d'expérience Asp.NET, nous avons beaucoup programmé en ASP 2.0 (en 1999/2000) mais c'était un spaghetti de HTML + VBScript + CSS, donc je ne pense pas que ça compte. Après toute cette expérience (la bulle Internet!) Nous sommes retournés à VB6 puis C# .NET 1x et vous connaissez le reste de l'histoire. Nous sommes une petite équipe de développeurs C# pour WinForms. Nous avons fait l'expérience de Linq To SQL Experience lors de notre dernière expérience .NET 3.5, et nous l'avons aimé. Nous l'avons trouvé très naturel et très "si nous aurions eu il y a cinq ans ..." comme. Compte tenu de tout cela, réécrire l'application n'est pas une "tâche simple" (même si nous voulions le faire dans le déjà connu C# .NET), cela prendrait du temps et de la planification, mais nous pourrions corriger des dizaines d'erreurs et avec 5 ans d'expérience de travail avec l'application, nous pouvons maintenant dire que nous avons une meilleure idée de la façon dont les clients aimeraient utiliser le logiciel et quelles limites nous avons créées (par nous-mêmes) lorsque nous avons conçu l'application actuelle. Toute cette «connaissance» de l'application et du fonctionnement de l'entreprise pourrait être appliquée pour produire une bien meilleure application en termes de conception, de code et de convivialité. Rappelez-vous dans .NET 1.1 nous n'avions même pas de génériques!;) (vous verrez beaucoup de ArrayList traîner ici). En complément, nous utilisons Crystal Reports (et, comme d'habitude, nous le détestons). Nous ne pensons pas que le contrôle de l'encre soit un "must" non plus. Le HTML/CSS pourrait être façonné pour ressembler à ce que nous voulons, bien que nous soyons conscients que le HTML n'est pas WinForms (et donc certaines choses ne peuvent pas être reproduites).
Pensez-vous que planifier cela dans MVC (ou WebForms) serait trop fou? J'aime l'idée de MVC (ruby on rails like) (je n'ai jamais programmé en ruby au-delà des bases du livre), donc personne dans notre équipe n'est un expert, mais nous pouvons toujours apprendre et lire. Cela ne doit pas être une "science de fusée", n'est-ce pas?
Je sais que toute cette question pourrait être un peu subjective, mais remplaceriez-vous une ancienne application Winforms avec une nouvelle application Web ASP/MVC/XXX? Avez-vous de l'expérience ou avez-vous essayé (et avez-vous eu du succès ou avez-vous échoué)?
Nous vous saurons gré de nous aider à mieux choisir ce que vous ferez.
Merci d'avance! Merci à tous ceux qui ont répondu, nous allons évaluer si c'est un bon coup ou non, c'est vraiment un sacré boulot, mais j'ai peur que l'application de bureau vieillit (en utilisant l'ancien réseau) 1.1 hacks) et qu'il fonctionne plus ou moins sans problème sous Vista et W7, je crains qu'une future mise à jour ne puisse le casser. En outre, beaucoup de parties «plus ou moins essentielles» de l'application exposent des idées mal conçues et nous avons dû pirater ici et là pour accomplir certaines tâches. Une partie de l'inexpérience, une partie du manque de connaissance à 100% du fonctionnement de l'entreprise (et les clients ne savaient pas exactement ce qu'ils voulaient). Une nouvelle application (sous n'importe quelle forme) nous permettrait de créer une meilleure base tout en conservant toutes les connaissances de l'utilisateur. Mais, c'est un L O T de travail :) Donc, nous allons considérer toutes ces options ici. Comme certains d'entre vous l'ont mentionné, peut-être un client plus mince et une utilisation (un peu) de WCF ici et là pourrait être plus approprié.
Encore une fois, merci à tous!
+1 pour mentionner que HTTP est sans état – jao
Puisqu'il s'agit de la première réponse et qu'elle fournit d'excellentes informations, je l'accepte, mais tous les autres sont appréciés. Malheureusement, StackOverflow ne traite que les nombres entiers pour les réponses, nous ne pouvons pas fournir deux bonnes réponses: S –