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