Вопрос явно касается информации о «Лучших инструментах разработки для обновления с VB6.0» для большого и сложного обновления VB6 / COM, а затем о C # или VB.NET.
Идеальный инструмент «конверсии» поможет вам достичь двух важнейших целей каждого обновления
- Сохранение функциональности
- Использование .NET таким образом,
который соответствует вашим желаемым стандартам кодирования и зависимости от платформы
Роль инструмента в сохранении функциональности
Большие, зрелые устаревшие системы могут содержать тысячи файлов кода и миллионы строк кода. Усилия, необходимые для полного описания и проверки функциональности, воплощенной в таком большом количестве кода, огромны. На самом деле, может быть так много функциональной работы, что некоторые команды с техническими взглядами сначала не видят ее. Они проводят большую часть своего времени, беспокоясь о том, как воспользоваться преимуществами новейших функций дизайна, языка и инфраструктуры .NET, прежде чем полностью осознают, насколько трудно будет сохранить и проверить устаревшие функциональные возможности. Как будто они ловят рыбу сзади огромного функционального кита, беспокоясь о ловле маленькой технической рыбы.
Команды, которые пытаются воспроизвести множество кода, читая, интерпретируя и перекодируя его вручную, вполне могут ослепнуть в этом процессе ... Поэтому критическая особенность любого инструмента преобразования состоит в том, чтобы помочь команде читать, интерпретировать и переписывать свой код переписывая его в форме, которая сохраняет его семантику. Более 60 лет ученые-компьютерщики изучали проблему чтения и интерпретации исходного кода, и решение, которое они нашли, называется компилятором. Эффективный «конвертер» кода работает как компилятор.
VB6 - это язык высокого уровня: компилятор Microsoft VB6 и его среда выполнения неисчислимым образом делали множество вещей: управление выводом типов, неявные преобразования, неявные с помощью ref, вызовы с поздним связыванием, работа с нулями, обработка ошибок в стиле goto, разработка форм и т. д. Конвертер VB6 также должен уметь распознавать и хранить множество мелких деталей, которые явно не указаны в коде, и должен уметь правильно выражать эти детали в .NET. Промышленный инструмент преобразования прочности будет иметь мощную, расширяемую метаязычную систему VB6, которая позволяет пользователю контролировать, как код VB6 распознается и интерпретируется.
VB6 также легко расширяется через COM. Существует много сотен различных API-интерфейсов COM, и это не считая всех внутренних компонентов, которые обычно становятся частью корпоративных систем. Преобразователь должен иметь возможность распознавать любой класс COM или элемент управления, используемый VB6, как в дизайне пользовательского интерфейса, так и в коде, и выражать его с помощью какого-либо другого соответствующего .NET API или взаимодействия. Один инструмент, о котором я знаю, может даже генерировать структуру кода .NET из информации об использовании COM в VB6. Промышленный инструмент преобразования прочности будет иметь мощную систему типов COM, которая является расширяемой и позволяет пользователю контролировать, как COM заменяется в сгенерированном коде.
Роль инструмента в использовании .NET
VB6 и .NET во многом различны, как и различные API, поддерживающие две платформы. Таким образом, с инструментами или без них почти всегда потребуется некоторая переделка. Кроме того, каждая команда привносит разные предпочтения, ограничения и требования в свой проект: спросите 10 программ, как что-то кодировать, и вы получите по крайней мере 10 разных ответов. Конвертер должен помочь команде выразить свои уникальные предпочтения, ограничения и требования. Это включает в себя обеспечение повторяющихся, самодокументируемых средств изменения кода VB6 перед его обработкой, изменения кода .NET после его создания, интеграции рукописного кода, описания пользовательских замен API, направления реструктуризации пользовательского кода и выполнения множества других динамических и проектных операций -специфические преобразования по мере необходимости.
Собираем все вместе
Большое обновлениередко бывает полностью предсказанным и спланированным заранее. Даже имея обширные знания как исходного кода, так и желаемых стандартов кодирования .NET, в ходе работы будет много проблем и возможностей. Исходный код и требования должны быть изменены во время проекта обновления. Необходима гибкая методология, которая позволяет
Наша команда должна адаптироваться к изменениям исходного кода, экспериментировать с различными методами кодирования .NET, реагировать на более глубокое понимание требований и постепенно улучшать процесс их автоматического обновления с течением времени. Промышленный инструмент преобразования прочности будет обладать точностью, точностью, гибкостью и скоростью, позволяющими использовать этот тип методологии.
Еще один комментарий об инструментах конвертации. Самый важный «инструмент», который вы будете использовать при обновлении .NET, - это ваш мозг. Вы должны изучать языки .NET, шаблоны проектирования и платформы и применять то, что вы знаете, при обновлении. Лучший автоматизированный инструмент не решает за вас, как переписать ваш код: он помогает вам повторно реализовать устаревшие функциональные возможности в соответствии с дизайном, который вы считаете целесообразным.
Microsoft предлагает несколько инструментов в этой статье. VB6 Upgrade Partner Tools
VB.NET или C #
Когда я спрашиваю сообщество .NET (т. Е. Выполняю поиск в Интернете) информацию, инструменты, идеи, код и помогаю с проблемами программирования, у меня гораздо больше шансов найти ответы, выраженные в C #, чем в VB.NET. Я также считаю, что компилятор C # лучше подходит для переписывания с помощью инструментов, поскольку он требует, чтобы сгенерированный код был более внутренне согласованным и явно описанным. Получение и сохранение сборки - это довольно грубая, но абсолютно критическая проверка качества кода и ключевая веха в любом процессе обновления. Помните, что VB.NET не VB6. Это кажется очевидным, но это может быть трудно иметь в виду, потому что два языка выглядят одинаково. Это сходство может быть обманчивым; так что IMO лучше перейти на C #, где вам напоминают, что правила разные. Наконец, C # всегда был и остается разработанным для .NET; VB.NET не может этого сказать.
Отказ от ответственности: я работаю на Великих Миграций. Есть еще много вопросов для обсуждения. Пожалуйста, посетите Портал документации Great Migrations , чтобы узнать больше статей, получить пробную версию gmStudio и попробовать инструмент для повышения промышленной прочности для себя.