То, что вы просите, на самом деле не является миграцией - это почти полное переписывание, по крайней мере, всего пользовательского интерфейса.Если ваше «очень большое ... приложение» не имеет очень маленького, простого пользовательского интерфейса, я бы бездельничал и задумался.Прочитайте вещей Джоэла, которые вы никогда не должны делать.
Итог: почти наверняка это действительно плохая идея.Если вы все равно это сделаете, вам нужно знать, что будет занимать довольно много времени.
Если вы решите это сделать, вам почти понадобится делать это постепенно.Чтобы сделать это, я, вероятно, начну с поиска отдельных «кусочков» функциональности в существующем коде и превращения этих кусочков в элементы управления ActiveX.Как только вы дошли до того, что ваша основная программа в основном представляет собой довольно минимальную среду, которая в большинстве случаев создает экземпляры и использует элементы управления ActiveX, становится довольно легко создать новую структуру в управляемом коде, которая делает примерно то же самое, делегируя большую частьреальная работа с существующими элементами управления ActiveX.После того, как вы это сделаете, вы можете начать переносить отдельные элементы управления в управляемый код по своему усмотрению.
Смысл этого в том, чтобы избежать длительного интервала, в течение которого вы просто пишете новыйкод, который дублирует старый код, но не может делать никаких обновлений для ваших клиентов.Почти единственная разумная альтернатива, которую я видел достаточно хорошо, - это две отдельные группы разработчиков: одна продолжает работать над базой старого кода и обновляет ее одновременно с тем, как вторая группа начинает полное переписывание с нуля.Если у вас достаточно денег, такой подход может сработать.
Microsoft, например, несколько раз делала подобные вещи.Просто для пары примеров, несколько лет назад, когда появились слухи о том, что Borland (тогда крупнейший конкурент Microsoft в области инструментов языка программирования) собирался выпускать TurboBASIC, Microsoft решила, что QuickBASIC (V2 в то время) действительно не мог конкурировать.В ответ они создали две команды: одну для выполнения QuickBASIC 2 настолько, насколько это целесообразно, до QuickBASIC 2, чтобы создать QuickBASIC 3. Вторая команда полностью переписала с нуля, получив то, что стало QuickBASIC 4.
Другой примерWindows 95/98 / ... против Windows NT.Они продолжили разработку существующей базы кода Windows одновременно с полным переписыванием с нуля для создания Windows NT.Хотя они обеспечивали синхронизацию двух команд, чтобы пользовательские интерфейсы выглядели одинаково и т. Д., Они были разработаны почти полностью отдельно друг от друга.Только после лет перекрытия между ними они, наконец, перестали работать над старой базой кода (и иногда я задаюсь вопросом, не была ли глупость Windows Me хотя бы частично преднамеренной, чтобы более или менее заставить пользователейперейти на базу кода NT).
Однако, если вы не можете сделать это, почти единственный ваш шанс на успех - использовать инкрементный подход.