В настоящее время я работаю над очень большим устаревшим приложением MFC MDI. Он имеет большое количество элементов пользовательского интерфейса - закрепляемые панели инструментов, настраиваемые элементы управления деревом, контекстные меню и т. Д. Это приложение для обработки изображений, поэтому основные виды визуализируются с использованием DirectX и OpenGL. Этому продукту около 10 лет, и одним из приоритетов здесь является обновление внешнего вида.
Зная, что Microsoft проделала хорошую работу по обеспечению взаимодействия между C ++ / MFC и .NET, я подумала, что имеет смысл постепенно перемещать базу кода. Сейчас я борюсь с тем, с чего начать.
Один из подходов состоит в том, чтобы разорвать инфраструктуру MFC с помощью WPF и повторно использовать как можно больше кода C ++. Это позволит нам максимально использовать преимущества архитектуры WPF, но будет означать длительный период разработки, пока мы снова не станем полностью функциональными.
Другой подход заключается в замене элементов управления MFC по одному на их аналоги WPF. Это позволит нам работать постепенно. Меня беспокоит этот подход, поскольку он означает, что между управляемым и неуправляемым кодом будет очень много точек подключения, и я не уверен, с чего начать с замены таких вещей, как главное меню и панели инструментов.
Или есть другой вариант, которого я здесь не вижу?
Будем благодарны за любые предложения или ссылки на информацию по этой теме.
Обновление: DavidK поднял несколько отличных вопросов, поэтому я добавляю мотивы этого.
1) Будущее развитие продукта
Этот продукт все еще активно разрабатывается с новыми функциями, добавляемыми на регулярной основе. Я думал, что было бы много смысла попытаться медленно перейти к C # / WPF. Из моего ограниченного опыта работы с C # / WPF я обнаружил, что прирост производительности поразителен по сравнению с работой в C ++ / MFC.
Другая важная вещь, которую мы получаем с WPF, - это возможность использовать преимущества многоголовых систем. Приложения MFC ограничены одним фреймом верхнего уровня, что затрудняет использование нескольких мониторов.
2) Удержание и набор сотрудников
Становится все труднее находить разработчиков, которые готовы работать на MFC. Для развития карьеры нынешних разработчиков также важно познакомиться с новыми технологиями.