У меня был проект, который был изначально написан на VB6, и они наняли меня, чтобы преобразовать его в .NET.Я недавно оставил эту работу.Я вполне уверен, что программу, вероятно, не следовало переписывать.
Вот несколько факторов, которые следует учитывать, если вы воспользуетесь подходом переписывания (основанным на моем проекте)
- Это не будет прямой переписать.Как только слово выходит, его получают переписанные запросы новых функций, и будет существенное количество редизайна / ре-архитектуры
- Люди не примут режим «только для обслуживания» без большого количествасопротивление в первую очередь.Какое-то время каждая ошибка будет «критической»
- Портирование приложения VB6 на .Net НЕ должно рассматриваться как более простое, чем перенос приложения C ++ на .Net или проект Haskell на .Net.Существует некоторая общность, но, в конце концов, это кодовая база, отличающаяся на 99% (возможно, 1% для существующих уравнений)
- Если предположить, что эта программа находится в разработке (даже внутри), ваша новая программа, скорее всего, не будет соответствоватьпо крайней мере изначально.Вы услышите «Но по-старому ...» или «Раньше…»
- Предполагая, что ваши клиенты не являются другими ИТ-специалистами, они НЕ БУДУТ понимать:
- Чтозанимает так много времени
- Почему это не просто программа (по внешнему виду) старой
- Хотя текущее приложение разрабатывалось со временем,скорее всего, ожидается, что ваше приложение будет иметь 100% функциональности при запуске и в более короткие сроки.
Все это - опыт реальной миграции с VB6 на .Net.Я был единственным разработчиком .Net.Не было ресурсов, чтобы нанять дополнительную помощь.Основные различия между моей ситуацией и вашей ситуацией: 1. оригинальный разработчик все еще был там - просто в новой роли (иногда это усложняло) и 2. оригинальное приложение не нуждалось в исправлении многих ошибок.
Я думаю, что если бы мне пришлось делать это снова, я бы попытался создать некоторые .NET-библиотеки и включить их в приложение VB6.Пошаговое преобразование в .net.Поэтому, возможно, вы перенесете данные и бизнес-логику для счетов к получению в .NET.Все остальные аспекты остаются прежними.Графический интерфейс, другие функции и т. Д. Затем, после того, как все будет развернуто и помечено как завершенное, перейдите в раздел Доставка и сделайте то же самое.Последний шаг - создание нового графического интерфейса .NET, который использует ваши DLL.
Это дает вам пару преимуществ
- В конце концов приложение написано в .NET
- Позволяет вам медленно внедрять ваши изменения.Вы не будете отлаживать доставку и дебиторскую задолженность, а также оплату труда и т. Д. В одно и то же время. Неделя «запуска в эксплуатацию»
- Позволяет использовать более современные инструменты без разрушения всей программы.Хотите использовать NHibernate, PLINQ или MEF?Делайте это по одному модулю за раз.Изучите инструмент и сделайте небольшие шаги
- Обеспечивает гибкость в графическом интерфейсе.В конце концов, вы можете создать WinForms, WPF или веб-проект, использующие все ваши основные DLL.
- Не вносит тонны изменений в пользователя сразу.Вы переписали эту часть дебиторской задолженности, и пользователь не имеет ни малейшего представления, потому что графический интерфейс такой же.Затем, когда вы развертываете GUI, вы ЗНАЕТЕ, что ваш бэкэнд работает.
- Упростит будущий рефакторинг.Вы уже разбили свой проект на куски размером с кусочек.Вы можете в дальнейшем работать с ними, зная, на что они влияют и т. Д.
Я бы ОЧЕНЬ устал, если бы я, как один разработчик, решил переписать это приложение и предоставить им работающий продукт.Я думаю, что консервативная оценка этого (при условии, что сфера охвата и т. Д.) Будет 24 месяца.Скорее всего, через 3-4 года.
Проект, который я оставил, работал 3 года, и его можно было обслуживать, но он еще не был 100% заменой исходного приложения.Как я уже сказал ... даже если бы это означало, что у меня нет работы, я не думаю, что это должно было быть переписано.