Необходимо перенести сложные проекты с интерфейсом GUI из RAD Studio в Visual Studio
Я работаю в компании, которая поддерживает несколько проектов настольных приложений, написанных на C++. Все эти приложения имеют сложные графические интерфейсы. Под "сложным" я подразумеваю, помимо прочего, интерфейсы со многими компонентами, глубокую иерархию компонентов, использование фреймов, сторонние и / или пользовательские пакеты компонентов, которые поддерживают такие функции, как прозрачность и анимация.
До сих пор мы всегда использовали пакет Embarcadero RAD Studio для написания и поддержки наших приложений. Однако многие повторяющиеся ошибки в каждой новой версии утомляли моих начальников, и теперь они рассматривают возможность перехода на Visual Studio.
Я думаю, что перенос основных функций приложения, написанных на C++, не будет реальной проблемой.
Однако для GUI это другая история. У меня был предыдущий опыт работы со сложными интерфейсами под компилятором Visual Studio 2003, и я помню, что это было болезненной работой по их созданию и поддержке. Реального дизайнера не было, компоненты были ограничены, и огромная часть работы должна была выполняться вручную. После этого я взглянул на инструменты проектирования, предоставляемые Visual Studio 2017, и у меня первое впечатление, что с тех пор мало что изменилось. Конструктор для проектов C++ все еще находится в зачаточном состоянии, особенно по сравнению с RAD Studio VCL с его хорошо поставленной библиотекой компонентов. API C# ближе, чем мне нужно, но я не могу предусмотреть переписать весь мой код на C# как серьезный вариант.
Я пытался найти учебники о передовых методах применения в такой ситуации, но до сих пор не нашел полезной информации.
Мои вопросы:
- Могу ли я восстановить свой текущий графический интерфейс, хотя бы его часть, при переходе на Visual Studio, или мне нужно планировать переписать все с нуля?
- Предоставляет ли Visual Studio механизм, аналогичный VCL, для создания интерфейсов GUI, установки пакетов сторонних производителей и написания пользовательских компонентов? И если да, где я могу найти соответствующую информацию об этом?
- Возможен ли такой порт без большой дозы головной боли и слез? Где я могу найти соответствующую информацию о таком процессе?
1 ответ
В настоящее время я также работаю над продуктом, который разработан с использованием Embarcadero RAD Studio и некоторых сторонних элементов управления пользовательским интерфейсом. Разработка была сделана много лет назад, поэтому ее интерфейс довольно старый. Я попытался перенести его в Visual Studio, разработав логику приложения на C++ и пользовательский интерфейс на C#(WPF). Но это так же хорошо, как написание нового приложения, стоимость больше. Поэтому мы прекратили это упражнение. Однако то, что я узнал во время этого, -
- Перенос приложения VCL из RAD Studio в Visual Studio - это все равно что писать новое приложение. Нет однозначного отображения (типы данных, структуры, элементы управления пользовательского интерфейса и т. Д.), Вы начинаете с нуля. Также нет доступных инструментов, которые могут помочь этой миграции.
- Некоторые типы данных, структуры данных, элементы управления пользовательского интерфейса легко доступны в RAD Studio, которые недоступны в Visual C++ (MFC), и наоборот. Таким образом, вы должны просмотреть каждую строку кода при переносе логики приложения.
- Для Visual C++ (MFC) нет сторонних элементов управления пользовательским интерфейсом, которые могут упростить вашу жизнь. Для RAD Studio у вас есть инструменты LMD, businessSkinForms и т. Д.
- Проработав в RAD Studio более 5 лет, разработка пользовательского интерфейса стала довольно простой в RAD Studio (пользовательский интерфейс в C++). Однако в Visual Studio вы можете разработать свой пользовательский интерфейс на C# (WPF), который будет насыщенным и сможет взаимодействовать с логикой приложения, написанной на C++.
Как вы сказали, у вас есть несколько настольных приложений, разработанных с помощью RAD Studio, при этом переход на Visual Studio начинается с небольшого и автономного приложения. Таким образом, вы получите некоторую уверенность при переносе этого приложения, и затем вы можете запустить такое перенесенное небольшое приложение в производство одно за другим.
~ Nilesh