Меньше времени: переписывание или преобразование приложения из VB5 в C # - PullRequest
4 голосов
/ 11 апреля 2011

У меня есть контракт, по которому я должен продолжить разработку старого комплекта приложений, который был запрограммирован в VB5 еще в те дни.

У меня исправление ошибки и разработка новой функции.

Итак, у меня есть несколько вариантов:

  1. Продолжать программирование в VB5 (NOOOOOOOOOOOOOOO !!!!)
  2. Конвертировать VB5 в C # (как ???не сходить с ума?)
  3. Переписать весь набор приложений (очень много времени)

Есть ли другие варианты?Что мне делать?

РЕДАКТИРОВАТЬ: А также, он также опирается на базу данных ACCESS, которую я хотел бы перейти на SQL EXPRESS.Потому что это сумасшедшая база данных, нелогично созданная глупым программистом из 90-х.

Спасибо

Ответы [ 7 ]

3 голосов
/ 11 апреля 2011

Выбор, который я сделал каждый раз, состоит в том, чтобы просто переписать или купить подходящую замену, если я смогу ее найти.

Я пытался делать постепенные обновления с VB6 до VB.NET, но мне не нравится этот подход, потому что он оставляет элементы управления ActiveX, которые я бы предпочел не использовать. Переписывание чище.

Я не думаю, что есть конвертер из VB5 в C #. Возможно, вы сможете перейти с VB5 на VB.NET, а затем конвертировать в C #, но, по моему опыту, переписывание занимает меньше времени, чем попытка обновления и возиться с неработающим кодом.

1 голос
/ 11 апреля 2011

Я недавно закончил работу над проектом, в котором мы конвертировали множество унаследованных приложений VB6 в C #, используя Vins Upgrade Companion от Artinsoft .

Трудно решить, какой подходлучшее.Во многих случаях преобразование кода может оказаться очень болезненным, особенно если существует много логики, основанной на функциях, которые существенно различаются между двумя платформами (например, одноиндексные массивы или обработка ошибок с помощью Information.Errобъект вместо сквозных исключений).

С другой стороны, если вы попытаетесь написать его с нуля, есть большая вероятность, что вы случайно измените какое-то тонкое поведение, которое не сразу становится очевидным при просмотреоригинальный код VB5.Подобные вещи могут быть трудно отследить.

Хороший компромисс - использовать конвертер для переноса кода, а затем использовать его как руководство для написания вещей с нуля, так как, надеюсь, будут места, где выможет просто поднять преобразованный код прямо в новую базу кода.В то же время вы получаете преимущество от написания более удобного для сопровождения кода везде.

С учетом всего сказанного, если исходный VB5 хорошо написан и (относительно) хорошо спроектирован, то я бы рекомендовал против любого родаобновления.Вы потратите гораздо больше времени, пытаясь соответствовать существующему поведению старого приложения, чем просто работаете над старым кодом.

Удачи вам во всем, что вы решите делать - вам это понадобится :)

1 голос
/ 11 апреля 2011

Ответ определенно зависит от множества факторов.Недавно у меня был похожий проект (10-летнее приложение для Windows на VB6 с большой базой кодов спагетти), и я рассмотрел его «гибридным» подходом:

  • Ошибки были исправлены в VB6
  • Новые функции были разработаны в .NET 4 с использованием COM-взаимодействия.

Мы разработали некоторые диалоговые окна WPF и разработали их стили для соответствия старому интерфейсу для обработки нового пользовательского интерфейса.

Этот параметр работает только в том случае, если новые функции практически не зависят от основного приложения, но он имеет преимущество, заключающееся в том, что он, по крайней мере, использует производительность новых технологий, а также прокладывает путь для будущего преобразования.

1 голос
/ 11 апреля 2011

Один из подходов состоит в том, чтобы тактически переписать разделы кода в C # - вы можете начать с областей, в которых вы, скорее всего, исправляете ошибки, создать сборки C #, чтобы отразить функциональность, а затем открыть их для кода VB5 через COM Interop.

Для такого подхода настоятельно рекомендуется хороший набор юнит-тестов!

Я слышал, что Эффективная работа с устаревшим кодом от Michael Feathers - лучшая книга для понимания того, как лучше всего решить такую ​​проблему.

1 голос
/ 11 апреля 2011

Нет надежного способа сделать 2), так что это 1) или 3).

И я не думаю, что ваш клиент хочет заплатить за 3). Но, может быть, вы можете продать его по надежности, поддержке и т. Д.

В противном случае вы застряли с 1)

0 голосов
/ 11 апреля 2011

Если вам просто необходимо исправить ошибку, и это достаточно простая ошибка, и вы не ожидаете гораздо большей работы за ее пределами - придерживайтесь VB5.Все остальное принесет гораздо больше работы.

Однако, если это действительно «живой» продукт, над которым вы собираетесь работать в будущем, я бы, вероятно, начал с нуля.Я предполагаю, что вы многое узнали о дизайне и архитектуре с момента написания приложения - так что вы могли бы также воспользоваться возможностью написать более удобное в обслуживании приложение.(Вы также, вероятно, узнали, какие дизайнерские решения в исходном приложении оказались ошибочными.)

0 голосов
/ 11 апреля 2011

Может быть, вам следует сначала конвертировать в vb.net, а затем в C #?

...