La migration d'un Delphi 7 application .NET
Des conseils sur la façon de migrer l'existant Delphi 7 entreprise application .NET 2.0 dans Visual Studio 2005?
Visual Studio 2005 a déjà été acheté, l'entreprise veut s'éloigner de la Borland/Codegear outils.
L'application est un client unique exécutable du serveur, en utilisant un certain nombre de la 3ème partie de contrôles d'INTERFACE utilisateur et de Crystal reports 10 pour les rapports.
Il y a beaucoup de logique d'affaires répartis sur Delphi types dans l'INTERFACE utilisateur ainsi que de nombreux SQL Server 2000 procédures stockées. Déplacement d'une grande partie de la procédure stockée logique dans .NET des classes est un autre objectif.
À réduire l'impact sur les clients, une pièce par pièce approche plutôt qu'une réécriture complète de la conversion serait préférable, si possible. Merci à l'avance.
[Mise à jour] quelqu'un avait une expérience, bon, mauvais ou laid, Géré à l'aide de la VCL pour ce type de scénario?
- Approche RAD, c'est à dire le mélange de l'INTERFACE utilisateur et la logique, et l'utilisation de l'stockés procs permet la migration difficile. Vous devez idenfy "coutures", c'est à dire la partie de code qui peuvent être migrés et testé, et de le faire petit à petit. Jetez un oeil à Travailler Efficacement avec le Code Legacy. La peine de lire ce grand livre. Et de passer en approche SOA pour migrer votre Logique Métier de l'INTERFACE utilisateur et stockées procs de serveurs.
Vous devez vous connecter pour publier un commentaire.
J'ai travaillé dans une entreprise qui a été la migration de Delphes à WPF/.Net circa 2007. Nous avons essayé un morceau par morceau approche. C'était douloureux. Nous étions toujours en cours d'exécution dans des bogues dans l'interopérabilité. L'appel de Delphes à WPF ou Winforms et le dos est douloureux. Si les différents contrôles de l'INTERFACE utilisateur et les fenêtres de votre application appeler les uns les autres beaucoup, je pense que vous ferez l'expérience d'importantes douleurs de croissance.
Si vous pouvez vous permettre de faire la conversion tout à la fois, je voudrais aller pour elle. Si non, séparer les parties de votre application autonome ou d'avoir le minimum d'interactions avec le reste de l'application.
Je vous suggère aussi de sauter dans .Net 2008. Pourquoi vous choisissez une technologie qui est près de 4 ans (VS 2005)? Je pense que c'est une très, très mauvaise décision d'affaires à choisir de sauter dans .Net 2.0 quand .Net 3.5 est très stable. La seule raison valable que je serait toujours présent pour la direction .Net 2.0 serait de support de Windows 2000. Avez-vous encore des clients sur Win2k? Aurez-vous de clients sur Win2k par le temps de la conversion est terminée? Avez-vous des clients vous ne pouvez pas obtenir de passer à XP ou Vista? .Net 3.0 et 3.5 ne sont pas pris en charge dans Win2k. C'est le seul inconvénient que je peux penser.
.Net 3.5, C# 2008 offre des avantages importants pour votre entreprise. Vous avez un certain nombre de fonctionnalités de langage qui permettra d'accélérer la développer du temps par rapport à C# 2.0. Vous avez WPF, ce qui est largement supérieur à Winforms. Je dirais que l'on peut développer le même batteleship-gris de Windows, vous obtenez avec WPF, Winforms, de les développer plus rapidement, et quand vous voulez un peu de eye-candy, vous serez à l'aide d'une technologie qui peut facilement fournir. Si vous êtes l'apprentissage d'une nouvelle plate-forme de fenêtrage pour cette conversion, pourquoi ne pas investir dans l'apprentissage de choses nouvelles?
Aussi, s'il vous plaît dites-moi, vous n'avez pas vraiment acheter VS 2005. Vous pouvez acheter un MSDN Universal licence pour environ le même coût, et chaque développement de produit lié à Microsoft. L'acheter à partir d'un 3ème partie et vous obtiendrez un bon de réduction.
Désolé si je ne suis sorti négatif. Sincèrement, bonne chance sur la migration. Je viens d'avoir des retours en arrière, quand je pense avoir à renoncer à toutes les bonnes choses dans .Net 3.5.
Qui sonne comme un très mauvaise idée pour moi.
Est-il un avantage technologique de votre produit dans .NET, ou est-il essentiellement d'une décision politique de Microsoft de la boutique? Pour les client-server, Delphi est assez difficile à battre. J'ai utilisé VS2005/8 et il est vraiment véritablement et sincèrement pas aussi bon que Delphi pour Win32 développement. Mais si vous allez à migrer vers le web en bas de la route, alors VS a des avantages certains.
Si têtu gens d'affaires de refuser purement et simplement à utiliser Delphi plus, alors KiwiBastard est correct, de l'OMI. Convertir des premiers à Delphi.NET puis migrer à partir de là à VS2005. Ou 2010, étant donné que c'est un plus un échéancier réaliste 🙂
Auparavant, je travaillais dans une entreprise qui voulait se convertir à partir de Delphi à C#.NET parce que .NET est tout frais et brillant. Ils ont apporté plus de développeurs qui a eu beaucoup de C# de l'expérience et il a fini par prendre 3 fois les développeurs de deux fois plus longue pour le portage de l'application en C# alors il l'a fait pour écrire la première fois en Delphi pour très peu d'autres ROI (quelques nouvelles fonctionnalités ont été ajoutées dans le processus). Plus les clients ne sont pas satisfaits des performances de l'application ou de l'INTERFACE utilisateur.
Étude de cas après étude de cas montre que la réécriture est une mauvaise idée. (Astuce chapeau à kogus)
Si vous devez vous déplacer vers .NET (oui, je sais, vous n'avez pas à faire la décision, quelqu'un avec moins d'informations fait) alors je vous suggérons d'utiliser Delphi pour .NET ou RemObjects Oxygene. Ce dernier étant un Visual Studio plug-in. Mais même marc hofman, l'Architecte Logiciel en Chef de RemObjects Oxygene a dit que c'est une mauvaise idée de migrer une parfaite application de travail pour .NET "juste parce que."
Si vous pouvez attendre pour Delphi Prism, qui est aussi un Visual Studio add-in et est prévu pour plus tard cette année.
Au coup par coup conversion modifierait le code Delphi natif utiliser COM de sorte que le .NET peut co-exister avec Delphi (ou peut-être en utilisant une autre technologie - difficile à dire)
Si vous le pouvez, il peut être plus facile à convertir à l'application de Delphi.NET tout d'abord, puis au moins l' .NET de bits seront en mesure de communiquer un peu plus facile.
Juste une pensée.
Éloigner de CodeGear/outils Borland fondamentalement élimine toute Delphi .NET solution et une réécriture totale de votre application.
J'espère que ma réponse ci-dessous vous aideront à prendre votre décision.
De l'expérience (avoir réécrit une application Delphi avec une équipe de personnes), il se résume à une des deux possibilités ci-dessous.
Mais d'abord, un avertissement: vous prendra au moins, le développement total de l'effort qu'il a fallu pour écrire votre application Delphi.
Dans notre cas, cet effort a été justifiée, car la vieille Delphi application (qui, en fait, c'était Kylix) a eu une fin de vie à cause de diverses raisons.
Notre réécriture se composait de deux parties: la réécriture limitée fonctionnalités supplémentaires suivie par un grand nombre de fonctionnalités supplémentaires (la conception de la première partie a déjà pris la deuxième partie en compte).
Arrière de votre choix:
1 - un total de réécriture en C# ou VB.NET dans Visual Studio
2 - un une réutilisation partielle de votre Delphi existantes de la couche de gestion de code à l'aide de l'Oxygène à partir de RemObjecs (Visual Studio plugin avec une syntaxe qui est très similaire à la syntaxe Delphi). CodeGear offrira Prisme bientôt (probablement avant la fin de l'année 2008), qui sera également s'intégrer dans Visual Studio.
Parce que .NET d'accès aux données et l'INTERFACE utilisateur sont totalement différentes de Delphi, vous aurez à faire à partir de zéro (à la fois pour le scénario 1 et 2). Visual Studio 2008 offre beaucoup d'avantages ici sur Visual Studio 2005.
Il n'y a pas une telle chose que de faire cette migration progressivement, depuis que vous faites une plate-forme complète changer ici, c'est une approche du tout ou rien.
À la fois d'un scénario va prendre beaucoup de temps (même si vous avez Delphi expérience, obtenir vous-même des habitués dans la .NET monde va prendre du temps).
Visual Studio peut interagir avec Crystal Reports, et va bien avec SQL Server.
Depuis Visual Studio 2008 offre beaucoup d'avantages (pas seulement .NET 3.5, mais aussi la productivité sage), vous feriez mieux d'aller avec qui.
Sur le côté de l'INTERFACE utilisateur, vous devez faire un choix équilibré entre les WinForms (aka Windows Forms) et Windows Presentation Foundation (aka WPF).
Si c'est un 1-de-1 réécrire, vous pourriez voulez coller avec WinForms comme il est familier à ce que vous avez. Vous avez probablement besoin d'utiliser certaines 3ème partie les composants pour obtenir votre INTERFACE utilisateur d'aller; DevExpress est un bon choix car ils ont les mêmes composants Delphi et Visual Studio.
Mais si vous voulez aller pour les futurs bonbons pour les yeux, alors vous pourriez envisager de WPF. Être prêt pour une plus raide de la courbe d'apprentissage ici que WinForms, car il est très différent de ce à quoi vous êtes habitué.
Si vous décidez de rester avec Delphi, vous voudrez peut-être regarder dans la VCL pour le Web (aka IntraWeb) et en Delphi 2009 (beaucoup de choses ont changé dans la Delphi monde depuis Delphi 7 a été annoncé il y a 6 ans).
Bonne chance de faire votre choix!
--jeroen
Je suggère de regarder à l'Hydre de RemObjects. Essentiellement, il raps l'interface com pour vous et vous offre un pattern observer pour assurer l'interface entre votre Delphi et .Net application. Que vous pouvez avoir .Net les formes apparaissent sur les panneaux à l'intérieur de votre application Delphi. Cela fournit une belle voie de migration où vous remplacez votre code Delphi peu à peu lors de la migration de la fonctionnalité .Net.
Pour moi la question serait: quelle langue voulez-vous utiliser? J'espère que C# et pas VB.Net. (Avec tous les maladroits de la politique dans ce cas d'utilisation, ce n'est pas clair, par tous les moyens.)
La prochaine vous allez probablement entendre, c'est qu'il existe des convertisseurs qui vous permettra de faire cela. On est allé au moyen d'une évaluation de ces convertisseurs (Delphi 7 pour C#) et ont été très! déçu.
Puis-je suggérer un compromis? Comment à propos de Delphi Prism? Il est Delphi dans VS2008. Bien sûr, vous avez encore Delphi et, par conséquent, Codegear, mais vous avez aussi de VS (en tant que votre entreprise attend de vous que vous).
Il y a eu un rapport scientifique d'un succès de la transformation d'un 1,5 million de ligne de Delphi Projet de C# par John Brant, Don Roberts et coll. Il a écrit un Delphi parser, un C# générateur et beaucoup de règles de transformation sur l'AST. L'extension progressive de l'ensemble de règles, de faire une compilation quotidienne, beaucoup de tests unitaires, et certaines réécriture de difficile pièces Delphi de lui avec une équipe de 4 personnes, parmi lesquels certains des développeurs à l'origine, avec une profonde Delphi & C# connaissances, de migrer le logiciel en 18 mois. John Brant & Don Roberts être les développeurs à l'origine du refactoring browser et le SmaCC compilateur kit de construction, vous êtes susceptibles d'être en mesure d'aller aussi vite.
Si c'était un investissement important, il n'est nulle part "de la même taille que l'original de développement". Les auteurs notent qu'une simple réécriture, sans outils ou avec un seul coup de feu de l'outil, comme indiqué par Jeroen, est très susceptible d'entraîner, surtout si de nouvelles exigences sont prises en compte.
Les auteurs ont fait à grande échelle refactorings, tout en restant sur la même plate-forme pour un autre projet, remplacer la totalité de la persistance de l'infrastructure. Cela pourrait être pertinent pour les plus âgés (BDE?) en fonction des projets.
Que vous pouvez vraiment décider si une pièce par pièce approche est possible. Par exemple, l'application peut-elle être divisée en place facilement ou sont toutes les formes trop fortement couplée avec toute la logique métier. Techniquement, c'est possible, mais tout dépend de la façon dont la base de code est structuré vraiment.