【发布时间】:2010-10-24 14:30:14
【问题描述】:
我目前正在开发一个非常大的遗留 MFC MDI 应用程序。它有大量的 UI 元素——可停靠工具栏、自定义树控件、上下文菜单等。它是一个图像处理应用程序,因此主视图使用 DirectX 和 OpenGL 呈现自己。该产品大约有 10 年的历史,这里的首要任务之一是更新它的外观和感觉。
知道 Microsoft 在提供 C++/MFC 和 .NET 之间的互操作性方面做得很好,我认为逐步迁移代码库是有意义的。我现在正在努力的是从哪里开始。
一种方法是使用 WPF 淘汰 MFC 框架,并尽可能多地重用 C++ 代码。这将使我们能够最大限度地发挥 WPF 架构的优势,但也意味着我们需要很长的开发周期才能再次完全发挥作用。
另一种方法是将 MFC 控件一次替换为对应的 WPF 控件。这将使我们能够增量工作。我对这种方法的担忧是,这意味着托管代码和非托管代码之间会有大量的连接点,我不确定从哪里开始替换主菜单和工具栏等内容。
或者我没有看到其他选项?
任何有关此主题的信息的建议或链接将不胜感激。
更新:DavidK 提出了一些很好的问题,所以我添加了这背后的动机。
1) 产品的未来发展
此产品仍在积极开发中,并会定期添加新功能。我认为尝试慢慢迁移到 C#/WPF 会很有意义。根据我对 C#/WPF 的有限经验,我发现在 C++/MFC 中工作所带来的生产力提升是惊人的。
我们通过 WPF 获得的另一件大事是利用多头系统的能力。 MFC 应用程序仅限于单个顶级框架,因此很难利用多个显示器。
2) 员工保留和招聘
找到愿意从事 MFC 工作的开发人员变得越来越难。接触新技术对于当前开发人员的职业发展也很重要。
【问题讨论】:
-
如果可以的话,我会投不止一个赞成票。
-
从 MFC 迁移的理想方式是使用 QT;至少你现在的开发人员不会吵着要使用几年后就会出现的下一个很酷的 GUI 技术:)
-
QT 的问题在于它实际上是从 MFC 横向移动,而不是在技术和生产力方面的飞跃。除非您正在寻找跨平台解决方案,否则我认为没有充分的理由从 MFC 转到 QT。对于一家 Windows 商店来说,这一举措没有任何意义。