Стратегия преобразования приложения VB6 в .NET

Было бы неплохо начать преобразование форм в .NET по одной, которые вы затем вызывали бы из приложения VB6 через COM-взаимодействие.

Таким образом, к концу процесса вы просто преобразуете «оболочку» приложения VB6 в новое приложение .NET, и все ваши формы будут готовы к работе в .NET.

Есть ли лучшая стратегия?


person Craig Johnston    schedule 27.04.2010    source источник
comment
В VB6 выставляете ли вы какие-либо сложные типы через COM? Потому что они могут быть несовместимы между VB6 и .Net. Например, если вы используете MSXML в VB6, вы захотите заменить его на System.Xml в .Net; это будет работать, только если вы не используете типы MSXML на уровне COM. То же самое и с ADO.   -  person Polyfun    schedule 27.04.2010
comment
Я все еще просматриваю код, но думаю, что скажу нет. Я пропустил VB6 через мастер VS2005, и он выдал несколько тысяч строк, которые не были скомпилированы в .NET, так что это, вероятно, не вариант.   -  person Craig Johnston    schedule 27.04.2010
comment
Однако существует еще одна услуга, которая преобразует код VB6 в C #. SELISE Phoenix предоставляет услуги (полностью функциональный преобразованный код) и поддержку после преобразования компаниям, которые им пользуются. phoenix.selise.ch   -  person Md. Ashaduzzaman    schedule 23.08.2020


Ответы (5)


У нас есть приложение VB6, которое также переносится на .NET, и мы используем стратегию COM-Interop. Все новые функции могут быть реализованы в .NET, только графический интерфейс остается на VB; в то же время мы можем самостоятельно разработать новый графический интерфейс.

Если вы этого еще не знаете, вы можете выполнить COM-взаимодействие без использования реестра (так как это вызвало у нас некоторые проблемы) с помощью COM-взаимодействия без регистрации:

person gammelgul    schedule 27.04.2010
comment
Некоторые рекомендуют сначала перенести графический интерфейс. Почему вы портировали графический интерфейс в последнюю очередь? - person Craig Johnston; 27.04.2010
comment
Собственно, идея заключалась в том, чтобы на первом этапе портировать только некоторые части очень сложного приложения и создать приложение Silverlight с портированной программной логикой. Приложение VB6 останется в течение некоторого времени, но все новые разработанные части могут использоваться приложением SL. - person gammelgul; 27.04.2010
comment
Я читал, что есть проблемы с использованием компонента .NET в vb6 с взаимодействием без рег. Были ли у вас проблемы с Reg-Free Com Interop между Vb6 и .NET? - person Craig Johnston; 27.04.2010
comment
Приложение было выпущено для наших клиентов некоторое время назад, до сих пор никаких проблем не возникало. - person gammelgul; 27.04.2010
comment
Однако существует еще одна услуга, которая преобразует код VB6 в C #. SELISE Phoenix предоставляет услуги (полностью функциональный преобразованный код) и поддержку после преобразования компаниям, которые им пользуются. phoenix.selise.ch - person Md. Ashaduzzaman; 23.08.2020

Если бы это был я, я бы сразу сорвал пластырь. Я не вижу никакой пользы в наличии промежуточного состояния [.NET Forms и COM-interop] для вашего приложения, потому что это просто добавляет ненужной сложности.

person Robert Williams    schedule 27.04.2010
comment
Но мне нужно, чтобы приложение отлично работало для пользователей в процессе миграции. - person Craig Johnston; 27.04.2010
comment
Что, вы переносите живые системы? - person M.A. Hanin; 27.04.2010
comment
Невозможно развернуть новое непроверенное приложение .net. Риск критических ошибок слишком велик. Изменение должно быть более постепенным. - person Craig Johnston; 27.04.2010
comment
Крейг прав. Инсайдер Microsoft опубликовал информацию о том, как он пытался помочь некоторым компаниям, которые переходили на .Net с помощью подхода большого взрыва, и многие проекты потерпели неудачу из-за слишком большой задачи. блоги. msdn.com/goto100/archive/2008/11/03/ - person MarkJ; 28.04.2010

Есть много советов по стратегиям конверсии.

  • Ознакомьтесь с другими вопросами с тегами vb6-migration.
  • Я настоятельно рекомендую страницу Microsoft о различных стратегиях преобразования.
  • Consider the commercial migration tools especially if you are short of developer time.
person MarkJ    schedule 28.04.2010
comment
Artinsoft теперь называется Mobilize.net. - person R.J. Dunnill; 07.12.2018

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

Я бы порекомендовал следующий подход (основанный на успешном переносе 600000-строчного приложения VB6 в .Net):

Убедитесь, что ваша существующая кодовая база VB6 правильно контролируется версиями и помечена. Напишите регрессионные тесты для вашей базы кода VB6, желательно автоматизированные. Возьмите известную базовую линию метки кода VB6 и перенесите ее как единое целое в .Net. Ваши клиенты продолжают использовать версию VB6. Запустите регрессионные тесты для перенесенного кода. Когда все тесты пройдены, примените к коду .Net любые изменения VB6, произошедшие с тех пор, как вы взяли исходный базовый уровень VB6. Доставить в УАТ и потом жить.

person Polyfun    schedule 27.04.2010
comment
+1 за написание из опыта. Хотя я могу представить, что применение к .Net-коду любых изменений VB6 может занять много времени в некоторых проектах. - person MarkJ; 28.04.2010

Будете ли вы выполнять большое сложное преобразование данных по одной таблице за раз, используя в ваших системах одну, другую или обе модели данных одновременно в течение длительного периода? Ясно, что здесь возникают проблемы и сложности. Лучшая практика для больших преобразований данных - это делать их таким образом, чтобы вся модель данных приводилась в желаемое конечное состояние в кратчайшие сроки. То же самое можно сказать и о крупномасштабных преобразованиях кода. Выполнение их по частям и в течение длительного периода времени чревато проблемами с точки зрения увеличения затрат на рабочую силу и технических рисков.

ИМО, лучший подход - сформулировать конечные стандарты разработки и архитектуры для вашего .NET-кода, а затем инвестировать в процесс, который поможет вам эффективно переписать вашу систему таким образом, чтобы она соответствовала этим стандартам и точно сохраняла унаследованные бизнес-правила и функциональные возможности. поведение. Длительные переходы и сложные гибридные / промежуточные решения - это лишь временная остановка, в лучшем случае вызывающая проблемы для бизнеса и провал проекта в худшем - их следует избегать. Более совершенный подход позволит вам доставлять унаследованное программное обеспечение на новую платформу внутренне согласованными, независимыми и хорошо сформированными частями. Более того, выполнение миграции меньшим количеством более крупных частей будет более эффективным и менее разрушительным, чем множество маленьких частей.

Ключом к тому, чтобы сделать этот подход жизнеспособным, является использование инструментов следующего поколения VB6 / COM / ASP в .NET, которые позволяют итеративно калибровать, настраивать и проверять автоматизированный процесс перезаписи, который уравновешивает автоматическое преобразование с ручной работой. Инструменты из Great Migrations специально разработаны для использования этой методологии. Мы называем это перезаписью с помощью инструментов. Мы использовали этот подход в нескольких крупных проектах миграции, включая обновление портфеля приложений объемом 1,2 млн LOC VB6 / COM до перепроектированного C # /. NET.

Отказ от ответственности: я работаю на Великую миграцию.

person mark    schedule 02.05.2010