Portage d'une application PowerBuilder sur .NET
Quelqu'un aurait-il des conseils pour la migration d'un PowerBuilder 10 application d'entreprise .NET?
Mon entreprise envisage la migration d'un héritage PB application .NET (C#) et je me demandais simplement si quelqu'un a une quelconque expérience - bonne ou mauvaise - que vous aimeriez partager.
L'application est plutôt grand avec 10 PBL bibliothèques, certains PFC ainsi que des cadres. Il existe un grand nombre de DLL appels. Enfin, il utilise un Serveur Microsoft SQL server base de données.
Nous avons discuté de transfert de la "base" du code de l'application .NET, puis le portage des fonctionnalités plus avancées comme nécessaire.
source d'informationauteur Justin Ethier
Vous devez vous connecter pour publier un commentaire.
Quand j'ai vu le titre, j'allais juste de se cacher, d'être un célèbre PB bigot. Oh bien. Merci pour le vote de confiance, Bernard.
Ma première suggestion serait d'abandonner la langue de l'auto-tromperie. Si je mange la moitié d'une "lite" gâteau au fromage, je vais encore perdre de vue ma ceinture. Une migration peut prendre aussi peu que 10 minutes. Ce que vous allez faire un réécrire. Le temps doit être mesurée comme une réécriture. Le risque doit être mesurée comme une réécriture. Et le effort de conception doit être mesurée comme une réécriture.
Oui, je l'ai dit, un effort de conception. "Migrer" évoque des images de pompage code par le biais de certains de la boîte noire avec une traduction de mise en miroir de l'original qui sort de l'autre côté. Voulez-vous de reproduire les mêmes erreurs de conception qui ont été faites en 1994, que vous avez été vivant avec pendant des années? Même avec une excellente qualité de code, je suppose que d'excellents choix en matière de conception PowerBuilder peut être terrible choix de conception en C#. Un droit de conversion négliger le pouvoir et les forces de la plate-forme? Serez-vous vivant avec les conséquences de la négligence d'une bonne C# design pour les 15 prochaines années?
Que le délire de côté, puisque vous ne mentionnez pas votre motivation pour aller de l'".NET," il est difficile de suggérer quelles sont les options que vous pourriez avoir à atténuer le risque d'une réécriture. Si votre direction a tout simplement décidé que les développeurs PowerBuilder sentir mauvais et doivent être radié de l'office, alors bonne chance pour la réécriture.
Tout simplement si vous souhaitez déployer Windows Forms, des Formulaires Web, des Assemblées ou des .NET web services, ou de tirer parti de la .Bibliothèques NET, alors que Paul mentionne, se déplaçant à 11.5 11.0 ou pourrait-il, avec un effort de plus près à une migration. (Je vous conseille à nouveau de l'examen et de s'assurer que vous avez un bon design pour la nouvelle plate-forme, en particulier avec des Formulaires Web, mais que les efforts devraient être considérablement inférieure à la réécriture.) Si vous souhaitez déployer une application WPF, je sais qu'une année est un bon moment à attendre, mais en regardant dans PowerBuilder 12 pourrait être en vaut la peine. Tiré correctement, WPF capacité peut mettre PowerBuilder dans un unique et puissant position.
Si une réécriture est garanti d'être dans votre avenir (douches semblent moins cher), vous pourriez phase de la conversion. DataWindow.NET permet de prendre votre DataWindows avec vous. (Mon animal de compagnie de la théorie de la semaine, c'est que les développeurs PowerBuilder prendre la DataWindow pour acquis jusqu'à ce qu'ils ont à reproduire toutes les fonctionnalités qui vient construit en). Être en mesure de déposer en pré-existante, pré-testé, multi-ligne, défilement, un minimum de consommer beaucoup de ressources, imprimable, liée à des données dynamiques de l'INTERFACE utilisateur, générer des minimes SQL avec construit dans la logique de verrouillage des enregistrements de base de données et d'erreur de conversion à des événements, dans une nouvelle application est un gros coup de pouce.
Vous pouvez également phase de la transition par la conversion de votre code PowerBuilder à quelque chose qui est consommable par un .NET application. Comme mentionné précédemment, vous pouvez produire des objets COM avec le PB 10 vous avez, mais devra se déplacer à 11.0 ou 11,5 à produire des assemblages. La valeur de ce qui peut dépendre de la façon dont bien partitionné votre application. Si votre logique métier serpents via l'interface graphique des événements et des fonctions au lieu d'être partitionné non des objets visuels (aka classes personnalisées), la valeur de ce qui peut être discutable. Pourtant, c'est un design faux pas qui devrait sans doute être corrigé avant la conversion en C#; c'est quelque chose qui peut être fait tout en maintenant l'application PowerBuilder comme une étape préliminaire à une progressive puis une conversion totale.
Pas de doute, je préfère vous voir rester avec PowerBuilder. À défaut, je tiens à vous voir réussir. Rappelez-vous, une fois que vous prenez la première bouchée, vous aurez à le finir.
Bonne chance pour trouver cette ceinture,
Terry.
Je vois que vous avez mentionné en mouvement "composantes de base".NET pour commencer. Comme vous pouvez le deviner maintenant, je pense qu'une approche par étapes est une sage décision. Maintenant, la définition de "base" peut être discutable, mais que diriez contraire point de vue. De la nourriture pour la pensée? (Évidemment, ce fut la mauvaise semaine pour commencer un régime.) Sur la base d'où PB est maintenant, il serait difficile de diviser votre demande entre le PB et le C#, le long de la fonctionnalité de l'application (par exemple, les Comptes Débiteurs en PB, les Comptes Créditeurs en C#). Une division qui est GUI vs logique d'entreprise. Comme mentionné avant, le pompage de la logique métier de PB dans des exécutables C# peut consommer est déjà possible. Comment au sujet de la construction de l'interface graphique en C#, avec l'DataWindows copié à partir de PB et la logique métier pomper comme des objets COM ou assemblées? Dans l'autre sens, de consommer .NET assemblées en PB, vous devrez vous déplacer jusqu'à 11.x et de migrer vers Windows Forms, ou les mettre dans un COM callable wrapper.
Ou, tout juste de former votre les développeurs C# dans PowerBuilder. Cela vient peut-être une rumeur, mais j'entends le nouveau PowerBuilder marketing slogan sera "c'est simple, même un développeur C# peut l'utiliser." 😉
Je pense que gbjbaanb vous a donné une bonne réponse ci-dessus.
D'autres questions mériteraient d'être envisagées:
Je ne suis pas contre réécrit si le logiciel est extrêmement médiocre et influe négativement sur l'activité de l'entreprise, mais même alors progressive des ajustements et des améliorations sont aussi moins de risques de façon à atteindre d'évolution du système.
Aussi, ne pas la caution sur ce thread jusqu'à ce que après Terry Voth postes. Il est sur StackOverflow et est l'un des meilleurs PB gars.
Si son assez grand, vous pourriez avoir de meilleurs résultats l'écriture d'un front-end pour il en .net (ou une interface web) et l'utilise pour interagir avec votre PB de code, en supposant que vous pouvez exposer les fonctionnalités de l'API.
Si vous utilisez PB 9 ou plus, vous pouvez générer COM ou .NET dllque vous pouvez consommer par un C# GUI. Je recommande ce cours à une réécriture dans une nouvelle langue.
Rappelez-vous, les réécritures ne sont jamais une balle d'argent, ils finissent toujours plus de temps, difficile, et le buggy que vous devez d'abord attendre.
Vous pourriez passer un peu de temps à enquêter sur PowerBuilder 11.5 (sorti récemment) qui ajoute un peu significatifs .NET de l'intégration.
De la migration vers PowerBuilder 11.5 afin de rendre l'utilisation des nouvelles .NET code sera certainement beaucoup plus facile que la réécriture complète de l'ensemble de l'application en C#.
Je ne sais pas si c'est bon ou pas, mais de vérifier cette (commercial) du produit : PB.Net
Je serais de retour que de la théorie. Je suis bien d'une tentative de conversion de PB8 de Java sur un projet de plusieurs années qui a échoué lamentablement, même à l'aide de la première gen HTML DataWindow. Mon employeur actuel est hell-bent sur de passer au C#, ne pas utiliser Datawindow.NET en dépit de > 2K DWOs dans notre produit actuel. Je ne suis pas impatient de la journée lors de la réalisation des ensembles. (l'ensemble du produit sont constitués de plusieurs applications de l'utilisateur, plus d'une douzaine de services, et l'utilisation d'environ 70 PBDs)
OP - à moins que votre application est particulièrement bien structurée (écrit à l'origine pour Server EA, peut-être?), ce ne sera pas un port. Les choses fonctionnent aussi de manière différente dans les PB & .NET environnements pour un simple port fonctionnent de manière satisfaisante. Je ne peux pas insister assez sur ce point - si vous êtes vraiment en utilisant le PB modèle d'événement, un "port" sera probablement un échec.
Vous devez regarder à la logique de flux (entrelacées UI & processus), le contrôle de flux (qui possède le processus ou les données maintenant), l'accès aux données (INTERFACE utilisateur, les données de la couche, ??) et les parties de l'DW modèle d'événement que vous utilisez à partir du code. Si vous pensez que vous ASP.NET (que nous sommes), l'ensemble de votre expérience d'interaction utilisateur devra changer, et qui alimenteront les autres considérations.
Ne sont pas directement liées à code, l'automatisation de la compilation va changer (nous utilisons PowerGen constante de PB construit; MSBuild est très différent) que votre installation & le programme d'installation.
Je pense que toute personne qui envisage ce pour un grand app serait assez fou pour ne pas très sérieusement envisager d'utiliser la DataWindow.NET afin de ne pas perdre leur investissement dans la DWs.
PHB à de grandes sociétés pense que Powerbuilder est un jouet de la langue et de la migration vers un nouveau langage comme le C# est trivial et peut être fait à faible coût. En fait, la migration d'un PB d'application à une autre langue en faudra au moins autant que le développement d'une toute nouvelle application sur la nouvelle langue. L'application sera généralement perdre des fonctionnalités par rapport à l'original et le résultat sera le mécontentement des utilisateurs. J'ai vu un certain nombre de tentatives ont échoué en raison de la difficulté et de l'utilisateur.
Si ce n'est pas cassé, ne le répare pas.
Oui, c'est faisable maintenant, sans avoir à réécrire les composants de service période.
PB de 12,5>
Et de la cible du GUI et de la composante du service des migrations et intégrations en c#.
Migration/Intégration de la stratégie peut varier en fonction de votre projet, de la portée, de l'évolutivité, de ressources et de montage.
Vous pouvez utiliser ces cibles et types de projet dans PowerBuilder .NET.
Consultez ce lien Sybase_PB .Net