【问题标题】:Converting a large MFC app to .net [closed]将大型 MFC 应用程序转换为 .net [关闭]
【发布时间】:2010-10-08 02:36:28
【问题描述】:

我们有一个大小合适的 MFC MDI 桌面应用程序。有没有一种合理的方法可以将 MFC 应用程序转换为 .net 应用程序,还是只重写更好?如果答案是针对特定应用的,您使用什么标准来做出决定?

【问题讨论】:

    标签: .net mfc


    【解决方案1】:

    在考虑从 MFC 到 WPF 的转换时,我花了很多时间研究 C#、WPF、Expression Blend、MVVM。

    如果您想失去 50% 的 MFC 功能,并在完成后拥有一个非常复杂、非常缓慢的应用程序,那么 WPF(VS 2010)是有意义的。没有 MDI。

    MVVM 开销太大,不实用。

    收益:垃圾收集、可调整大小的对话框、XAML 和更多数据绑定选项几乎不值得。

    最近对 MFC 的升级,添加了一个功能区栏(优于 Expression Blend 中的功能区栏创建)给了我想要的一切。

    简而言之,从 MFC 转换到 WPF/.NET 是个坏主意;算了。

    不要放弃 MFC Microsoft,否则你会让人跳槽。 (WTF?????)

    【讨论】:

    • 我同意你说的!
    【解决方案2】:

    我会跳过 WinForms 并直接使用 WPF。

    根据您的应用程序的设计方式,您不必重写所有内容。您可以使用托管 C++ 包装器从 C# 代码调用 C++ 代码,从而允许您重用现有 C++ 代码。微软也有关于 WPF 和 Win32/MFC 之间互操作的extensive documentation。你可以用 WinForms 做类似的事情。

    Microsoft 不遗余力地提供从 MFC 到 WinForms/WPF 的迁移路径,因为他们知道公司不能仅仅丢弃多年开发的代码。

    此外,如果您在 Google 上搜索“WPF 和 MFC”,您会发现很多人在同一个项目中使用这两种技术的示例。

    【讨论】:

      【解决方案3】:

      看我对this question的回答,和这个基本一样。

      【讨论】:

        【解决方案4】:

        当从 MFC 移植到 WinForms 时,您将不得不重写 UI 代码,如果 UI 和业务逻辑之间有很好的分离,那么您最好通过使用托管 C++ 或将其转换为 C# 来移植业务逻辑(语法足够相似以使其成为可能)。

        我为一个小型 MFC 应用程序完成了此操作,我通过将 C++ 代码粘贴到 c# 文件中并修复代码直到它开始工作,将业务逻辑移植到 c#,我从头开始重写了 GUI。

        事实证明这是一个非常明智的举措,因为我们不断将其开发成一个大型应用程序,最终结果比我们在 MFC 中在相同的时间表中所做的任何事情都要好。

        我们还有一个巨大的 MFC 应用程序,在 UI 和业务逻辑之间没有明确的分离,我们想将它移植到 .net,但还没有弄清楚如何去做。

        【讨论】:

          【解决方案5】:

          这肯定是重写,但 MFC 中的许多概念都有 .NET 对应物,因此您将能够映射到很多域模型。我会使用 Windows 窗体,因为它可以轻松映射到 MFC 提供的相同 Win32 样式 UI。

          如果您的 MFC 应用程序很好地分离了域模型和业务规则,您甚至可以使用 C++.NET 来重用其中的一些代码,并保持非托管或将其转换为托管类,并可选择将其转换为C# 稍后。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-06-04
            • 2018-04-12
            • 2014-10-30
            • 2011-03-25
            • 1970-01-01
            相关资源
            最近更新 更多