Migration de l'application à partir de Microsoft Access vers VB ou C # .NET
Je suis en train d'essayer de convaincre la direction de la nécessité du port de l'une de nos applications .NET. L'application a grandi pour être un peu un monstre dans l'Accès (backend SQL), avec 700 tables liées, 650 formulaires/sous-formulaires, 130 modules et 850 requêtes.
Je connais pas mal tous les principaux avantages de le faire, mais maintenant, faut voir comment cela peut être réalisé techniquement, donc je peux mettre un projet de plan d'ensemble.
Donc, mon plan était de convertir les requêtes dans des procédures stockées et/ou de points de vue sur le backend et ré-écrire les formes en WPF ou WinForms.
Maintenant, le code est là d'où je viens décoller. Est-il possible d'emballé le code-behind et des modules dans les dll et les consommer alors que c'est lentement porté à VB/C#?
Ce que nous ne pouvons pas être en reste, c'est la moitié d'une application en VB/C# et demi dans l'Accès, il doit apparaître à tous d'être une application, même à mi-chemin par le biais de la migration.
Merci d'avance.
EDIT: Juste quelques infos sur ce que nous faisons et pourquoi nous sommes à la recherche de déménager loin de l'Accès.
Nous sommes essentiellement un éditeur de logiciels et l'Accès à l'application est notre produit principal. Cette application a été développé sur une période de 15 ans, par de nombreux, de nombreux développeurs sur une base ad hoc. Il n'y a pas de documentation pour cette application.
Nous avons aussi des problèmes avec l'obtention de ramification dans le CCAP pour fonctionner correctement, donc nous avons actuellement a eu 4 ou 5 bases de code pour une demi-douzaine de clients que nous avons. En plus de cela, tous les tests que nous faisons est totalement manuel, que vous pouvez l'imaginer est un travail très intensif, et ne fait qu'effleurer la surface de ce qu'il a vraiment besoin d'être testé.
Nous sommes actuellement à la recherche de se développer et avoir un certain nombre de pistes de vente qui sont dans la phase finale. Je crains qu'avec ces nouvelles ventes, nous allons être submergés par le support et les tests, et que cette application va devenir encore plus empêtré un buggy.
Je vais aussi ajouter à cela le fait que nous sommes sur le point d'entrer dans la spécification de la phase d'un nouveau produit, ce qui est presque certainement va être construit à .NET. Si nous étions à la réécriture de l'application Access .NET, alors les gens que nous avons utilisé pour cela, allez directement sur ce nouveau développement. Si nous devions rester dans l'Accès, alors que nous aurions pour obtenir un nouvel Accès de gens, qui devra être remis à niveau une fois que nous commençons la nouvelle de développement.
Donc, essentiellement, il est venu jusqu'à deux choix, modification majeure travail dans l'Accès à l'essayer "d'organiser" le code un peu mieux, et ceux d'entre vous qui ont suggéré l'abattage des parties sont les plus probablement raison; je suis sûr qu'il y a des parties qui ne sont plus utilisés. Cependant, je crains que si nous restons dans l'Accès, nous ne serez pas en mesure de construire dans l'efficacité des contrôles et nous avons encore de ne pas avoir la bonne CSC ramification, ce qui conduira à l'appui de continuer à être un cauchemar, et à tous les futurs développements sur ce produit étoffe empirer les choses. De toute façon il y a beaucoup de travail que nous sommes sur le point de lancer, ce qui va être fait dans d'Acces, ou .NET.
source d'informationauteur James Ludlow
Vous devez vous connecter pour publier un commentaire.
J'ai été impliqué dans beaucoup de projets de migration où l'on est de la conversion à partir d'une plateforme à l'autre. J'ai vu aussi spectaculaires les dépassements de coûts et des sous estimations de la difficulté de ces types de projets.
Dans certains projets et de plates-formes que j'ai créé et que j'avais construit pour environ 25 000$, le coût de remplacement de cette application et de réécriture, il a abouti à l'autre équipe de gens qui prennent des cours de ce projet et les coûts qui en résultent était plus de 750 000$.
Vous êtes également faire l'hypothèse que le système actuel doit être remplacé. Vous DEVEZ avoir soit clair dans votre esprit ce que les objectifs de déménagement et de la réinstallation de la plate-forme actuelle et le logiciel sont. Simplement réécrire quelque chose et le déplacement de la fonctionnalité par rapport à une autre plate-forme de rendements très peu, à l'exception de dépenser beaucoup d'argent qui n'est pas vraiment un avantage pour votre entreprise de tous (mais bon les développeurs vont prendre l'argent, si ils vous convaincre de la nécessité de le faire)
Vous voudrez peut-être prendre une lecture de cet excellent article de Joel on software (Joel par la voie développé et créé ce forum débordement de pile – et j'ai été modérateur de certains de ses forums de discussion depuis près de 10 ans),. Dans cet article, Joel avertit et donne en garde contre de la bleu la simple réécriture parfaitement bon logiciel qui n'est pas de la rouille ou de l'usure.
L'Article ici: http://www.joelonsoftware.com/articles/fog0000000069.html
Joel continue à noter que dans les 10 dernières années, que l'article reste encore l'un de ses plus populaires (et quelque peu controversée)
Il n'a pas de sens de prendre une très bonne application qui fonctionne parfaitement pour les 10 ans et fait son travail, et puis il suffit de le réécrire dans un autre plate-forme, surtout si vous n'avez pas la main-d'œuvre et de l'expertise et de personnel disponible pour assurer ce nouveau système. Et c'est surtout plus, si les nouveaux systèmes ne va pas accomplir quoi que ce soit de plus que ce que le système antérieur était en train de faire. En fait si vous aviez la main-d'œuvre, ils avaient probablement ont déjà COMMENCÉ la conversion de ce système au fil du temps. Je veux dire, pourquoi tout d'un coup, à l'improviste quelqu'un jeter un interrupteur de lumière et tout d'un coup, de réaliser que les nouveaux développeurs, doivent être mis en réécrire un système qui est déjà en cours d'exécution fine?
Je vous ferais également remarquer ayant été dans cette entreprise pendant une longue période (publiées et technique de l'éditeur de l'accès à des livres), j'ai aussi fait des projets de migration de systèmes mainframe pour les ordinateurs de bureau . Et, j'ai aussi fait de la migration de la base de données de bureau de systèmes à grande systèmes mainframe .
Je peux seulement dire qu'il est rare de voir une application avec beaucoup de tables. En fait, cette question soulève des cloches d'alarme droit au large de la chauve-souris.
À cause d'un grand nombre de tables ici, je pense qu'il y a probablement de très nombreux processus, et de nombreuses applications bricoler ici que représente l'ensemble de ce système . Si ce n'est pas le cas, alors des cours de réécriture .net ne fait pas de sens à moins que vous adresse l'onu normalisée de la nature du système. Le fait que les données sont déjà dans SQL server aide, mais qui pourrait signifier que vous avez eu de la puissance et de la capacité et de l'infrastructure à l'échelle de quelque chose qui a été mal conçue et la première place
Une très grande majeure partie de la souplesse d'un logiciel, c'est d'avoir correctement normalisée des modèles de données. Le problème que vous avez est que vous avez données dans SQL server, et il est très tentant de réécrire des parties de formes et de fonctionnalité .net les formes, et de continuer à utiliser les données existantes modèles. Malheureusement, cela vous mettre un peu de rock et de hard place, parce que vous voulez continuer à utiliser les données existantes, et de commencer à la réécriture de la fonctionnalité .net. Cependant, la réécriture de la fonctionnalité .net sans aborder les modèles de données est une très mauvaise idée.
Dans une ironie du sort, c'est un catch 22, parce que probablement, si ce système avait vraiment fantastique grand conçu des modèles de données, vous pourriez même ne pas avoir la nécessité de revoir et de la déplacer dans .net. Access et SQL server peut évoluer à 100 utilisateurs avec facilité anway. Et, d'accès prend en charge l'utilisation d'objets de la classe, et même de contrôle de code source.
En d'autres termes garder à l'esprit que les gens peut-être demander de réécrire ce dans .net parce qu'ils croient que l'application puis comme par magie, ont augmenté la flexibilité, et de pouvoir être changé plus vite que de l'évolution de leurs règles d'affaires. En fait, souvent le contraire qui se produit, car l'accès est très RAD tool. Cela signifie que la ligne de front, les gens peuvent souvent apporter des modifications en raison de règles d'affaires en évolution, plus rapide que le Département informatique et leur équipe de développeurs travaillent sur la prochaine grande version de l'application. Et pire encore, vous ne voulez pas à la selle qu'IL Dept et ces développeurs avec un mauvais modèle de données.
Je veux dire, êtes-vous à présent de location le département de générer chaque feuille de calcul unique et excel pour les personnes en raison de processus d'affaires actuels ne sont pas assez flexibles? Ce serait merveilleux si le Département informatique à faire le tour pour tout le monde du bureau, leur tenir la main, et de construire les feuilles de calcul excel CORRECTEMENT pour tout le monde, mais c'est pas pratique dans le monde réel. Donc, en plus de l'accès à l'écart de ces personnes, vous pourriez aussi bien prendre excel loin d'eux aussi.
Je suis simplement en indiquant que mon araignée sens me fait dire que les modèles de données va être un vrai défi. Rappelez-vous, je serais toujours prendre pauvres code et grands conçu des modèles de données au cours de la marche arrière (Grand code, mais terrible, modèles de données). La raison pour cela, c'est avec beaucoup de modèles de données, le code et les applications pratiquement écrire eux-mêmes. Et avec beaucoup de modèles de données, puis de la facilité avec laquelle vous pouvez changer pour les affaires en constante évolution des règles de nouveau les faveurs des données des dessins plus que de grand code. Vous pouvez également entrer le facteur le code des heures supplémentaires QUAND vous avez de bons modèles de données. Donc, avec de bons modèles de données, vous pouvez déplacer les formes et les fonctionnalités et l'INTERFACE utilisateur dans .net, et vous pouvez le faire de manière transparente et facilement LORSQUE les données existantes modèles de sens de les garder.
Aussi il ne fait aucun sens pour passer à ces nouvelles technologies et vous êtes à la va introduire la possibilité d'introduire des choses comme le libre-service de portails web pour les processus d'entreprise existants. Donc, aujourd'hui, nous pouvons maintenant permettre aux clients de manipuler et d'utiliser une partie de l'information qui est actuellement enfermé dans le système. Cela peut être aussi simple que leur vérification de l'état de leurs commandes au lieu de perdre de précieuses client de temps au téléphone. Ou il pourrait être quelque chose de simple, comme la façon dont un grand paquet de l'entreprise au Canada permis de sauver environ de 10 000 000 $dans la première année de mise en œuvre de leur système de suivi des paquets. Ou peut-être quelque chose d'aussi simple que de permettre au client de rechercher du solde de leur compte.
Donc maintenant sur le marché, ces soi servir de portail web client systèmes permettent aux clients d'entrer et d'utiliser et d'obtenir leur information, au lieu de l'appel de certains employés au sein de l'organisation, qui puis se retourne et lance l'application et manipule les informations concernant le client, tandis que sur le téléphone. Pourrait tout aussi bien laisser le client faire ce travail! Donc, à partir de l'état des commandes, pour les soldes, les transactions bancaires, ou ce que jamais, il est, la vraie cerise modèle de billet d'aujourd'hui est de permettre au client d'utiliser une cellule de servir de portail web qui représente toutes les informations utiles que l'application interne est en cours de création .
Comme mentionné précédemment, vous devez vous demander, est l'endroit où est la main-d'œuvre et le personnel de se construire et de maintenir cette application? Évidemment, le système existant avec un très grand nombre de formes et de tables de jeter doit en quelque sorte été créé, et représente des investissements importants en temps et en efforts . Le concept clé vous devez vous demander, est l'endroit où étaient ceux d'importants investissements et les ressources provenant de construire l'application existante? Qui va maintenir le nouveau système alors? En d'autres mots, vous avez besoin pour concevoir le nouveau système pour réduire les coûts de maintenance. (les nouvelles versions de mon logiciel permet de réduire l'entretien par autant que 10 ou 15 heures par an pour le client ).
À la fin de la journée, un bon logiciel de développement et de bons dessins sont de bons modèles. À l'aide de l'Accès, ou VB6, ou vb.net n'a pas d'importance si le système est de rencontrer les besoins de votre entreprise maintenant.
Je tiens également à souligner que la nouvelle version d'access 2010, peut créer .les formulaires web. Ils sont XAML (zammel .formes de filet). Je suis le rappeler, car le changement de l'extrémité avant de la peau de l'accès à l' .net te rapporte TRÈS peu, sauf si le sous-jacent des structures de données et les dessins sont également modifiées afin de profiter des avantages de nouveaux possibles des processus d'affaires qui peut être accompli avec les nouvelles technologies (telles que celles de la cellule servir des portails web). Simplement repeindre la police finit par .formes de filet est vraiment très équivaut à un gaspillage de l'argent à mon humble avis, à MOINS que d'autres questions sont abordées comme le modèle de données, ou un certain type de portail web qui va améliorer la flexibilité ici.
Vous avez quelques bons conseils ici déjà. Gardez à l'esprit que c'est vraiment lié à ce que sont les buts et les raisons de ces gens qui à ce logiciel d'être réécrit .net. Ces nouveaux objectifs et vos désirs vaut mieux ne pas être basé sur le prétexte de simplement refaire les formes que vous avez maintenant dans .net qui permettra de réaliser vraiment rien du tout, et ne va pas améliorer leur capacité de répondre à leurs besoins changeants de l'entreprise que le système qu'ils utilisent actuellement, évidemment, avait été fait dans le passé.
Bonne chance sur ce je ne pense pas que c'est le genre de question qui peut être répondu dans un simple post sur un forum, mais au moins, vous avez beaucoup à mâcher sur ici de sorte que vous pouvez obtenir le roulement de boule.
Au lieu de vous dire combien il est difficile -- qui, je suis sûr que vous avez déjà réaliser -- je vais essayer de jeter quelques conseils:
1) Commencez par déplacer tout ce que vous pouvez sortir de MS Access et MS SQL. Cela signifie tables, procédures stockées, vues, etc. Si vous obtenez cette étape, votre MS Access application sera un front-end pour une vraie base de données, ce qui est déjà une victoire.
2) Envisager d'abandonner avant de commencer. Au lieu de portage tout, il pourrait faire plus de sens pour reconnaître les fonctions qui peuvent juste être laissé seul, tandis que les nouveaux venus MVC, WCF ou frontaux.
3) Il est tentant de port à partir de VBA pour VB.NET, sur la théorie que c'est de plus en plus semblables, mais je ne le recommande pas.
Je travaille dans le ministère qui est principalement responsable pour le remplacement d'anciennes applications .NET solutions. Dans mon entreprise, applications d'Accès sont utilisés pour de simples scénarios pour accomplir les besoins de l'entreprise d'une seule personne ou un petit groupe d'employés.
Parfois d'Accès de l'application grandit, groupe d'utilisateurs augmente ou de trop nombreux changements sont nécessaires. Dans ce cas, le département aide que l'Accès de l'application peut démarrer un projet, de recréer de l'application. Quand cela commence, nous pouvons être sûr que la nouvelle application sera loin de l'Accès en cours d'application.
D'abord l'analyste d'affaires est affecté au projet. Sa responsabilité est à la carte actuelle de la solution et pour discuter des problèmes de la solution actuelle et les attentes de la nouvelle solution. Je n'ai pas vu un projet où le "client" ne voulait que le remplacement de la solution actuelle. Chaque fois que le client souhaite aussi quelques nouvelles fonctionnalités et extensions qui n'a pas été possible dans l'Accès.
Analyste d'affaires crée une certaine description initiale de la solution attendue qui est passé pour les architectes. Les architectes qui décident du type d'application sera de construire, ce type de MATÉRIEL de l'infrastructure nécessaire et la manière dont l'application sera connecté à d'autres systèmes (si nécessaire). Après cette phase initiale, IL ont de grands photo sur demande et sur les changements nécessaires. Voici quelques estimation initiale est fait du projet peuvent être prévues et les ressources peuvent être affectées. Cette estimation est la limite pour le projet. Que mon équipe commence à faire le travail.
Nous utilisons l'approche agile de sorte que notre client (équipe interne) progressivement voit de nouvelles fonctionnalités de l'application. Nous avons d'abord rassembler de la série initiale (carnet de commandes) de l'utilisateur histoires (forme particulière d'exigences) et nous estimons que ces histoires d'utilisateur et de nous laisser le client à les hiérarchiser. Nous choisissons sous-ensemble des articles de l'utilisateur pour l'itération (généralement de 2 à 4 semaines). De nouveaux articles de l'utilisateur peuvent être ajoutées au carnet tout temps, mais nos histoires d'utilisateur ne peut pas changer au cours d'une itération. Après l'itération, nous présentons à la clientèle de travail d'une partie du logiciel. Basé sur le travail de la partie client peut décider de modifier les priorités dans le backlog ou de créer de nouveaux articles de l'utilisateur. Nous répétez cette démarche jusqu'à ce que le client dit d'arrêter ou de l'unité budget est consommé. Le point important est que toutes les histoires ont à faire. Le projet a été planifié avec un certain budget et à faible priorité histoires d'utilisateurs n'ont pas à être dépasser.
À partir du point de vue technique, c'est un projet que tout autre à l'exception de quelques différences:
650 formulaires/sous-formulaires est grand par toutes les normes. Que représente un important projet de conversion, et une "lente" port va être un cauchemar.
Je suggère l'élaboration d'un nouveau .NET application 'pic' qui contient les fonctionnalités de base qui est absolument nécessaire, puis appuyer sur. Dans le même temps, geler l'application d'Accès à partir de tous, mais l'essentiel de bugs.
Il existe quelques outils qui vous permet de convertir MS Access les formulaires .NET, mais ils vont probablement échouer sur des formes complexes avec des sous-formulaires.
Les "sans effort" Convertir les Formulaires de l'Accès à VB Objets
Donc, si un utilisateur est dans l'Accès et ils prennent une action pour ouvrir un formulaire qui se trouve être un autre exécutable écrit en C#, n'est-ce pas "apparaissent" à la même demande?
Il y a un groupe d'utilisateurs qui aiment une application séparée qui n'a que l'5-10 formes qu'ils utilisent.
Se débarrasser de tables/formes/fonctions qui ne sont pas utilisés par une augmentation de la fonctionnalité. Je ne sais pas le niveau de la documentation de cette application, mais commencer par là. Lorsque les utilisateurs découvrent qu'ils ont pour documenter les zones de l'application et de justifier le besoin pour les parties qu'ils n'utilisent pas, ils vont bénévoles de l'avoir retiré.