Actualmente estoy trabajando en una aplicación MDI MFC heredada muy grande. Tiene una gran cantidad de elementos de IU: barras de herramientas acoplables, controles de árbol personalizados, menús contextuales, etc. Es una aplicación de procesamiento de imágenes, por lo que las vistas principales se renderizan usando DirectX y OpenGL. El producto tiene aproximadamente 10 años y una de las prioridades aquí es actualizar su aspecto.¿Cuáles son algunas técnicas para migrar una aplicación MFC grande a WPF/.NET?
Sabiendo que Microsoft ha hecho un buen trabajo al proporcionar interoperabilidad entre C++/MFC y .NET, pensé que tendría sentido migrar la base de código de forma incremental. Lo que estoy luchando ahora es por dónde empezar.
Un enfoque es extraer el marco MFC con WPF y reutilizar la mayor cantidad de código C++ que podamos. Esto nos permitirá maximizar los beneficios de la arquitectura de WPF, pero significará un largo período de desarrollo hasta que seamos completamente funcionales de nuevo.
Otro enfoque es reemplazar los controles MFC de uno en uno con sus homólogos de WPF. Esto nos permitirá trabajar incrementalmente. Mi preocupación con este enfoque es que significa que habrá una gran cantidad de puntos de conexión entre el código administrado y no administrado, y no estoy seguro por dónde empezar reemplazando elementos como el menú principal y las barras de herramientas.
¿O hay otra opción aquí que no estoy viendo?
Cualquier sugerencia o enlaces a información sobre este tema serán apreciados.
Actualización: DavidK planteó algunas preguntas excelentes por lo que estoy agregando las motivaciones detrás de esto.
1) El desarrollo futuro del producto
Este producto aún está en desarrollo activamente con nuevas características a agregarse de manera regular. Pensé que tendría mucho sentido intentar y migrar lentamente hacia C#/WPF. En mi experiencia limitada con C#/WPF, encontré que las ganancias de productividad son increíbles sobre el trabajo en C++/MFC.
La otra gran cosa que estamos obteniendo con WPF es la capacidad de aprovechar los sistemas de varias cabezas. Las aplicaciones de MFC están limitadas a un único marco de nivel superior, por lo que es muy difícil aprovechar múltiples monitores.
2) Retención de los empleados y el reclutamiento
Se está haciendo cada vez más difícil encontrar desarrolladores que están dispuestos a trabajar en MFC. También es importante para el desarrollo profesional de los desarrolladores actuales obtener exposición a las tecnologías más nuevas.
Daría más de un voto positivo, si pudiera. –
la migración ideal de MFC es ir con QT; al menos entonces tus desarrolladores actuales no clamarán por desarrollar usando la próxima tecnología genial de GUI que saldrá dentro de unos años :) – gbjbaanb
El problema con QT es que es realmente un movimiento lateral desde MFC en vez de un salto adelante en términos de tecnología y ganancias de productividad. No veo ninguna buena razón para pasar de MFC a QT a menos que esté buscando una solución multiplataforma. Para una tienda de Windows, ese movimiento no tendría ningún sentido. –