比 MFC 更好的框架?

Posted

技术标签:

【中文标题】比 MFC 更好的框架?【英文标题】:Better framework than MFC? 【发布时间】:2011-12-09 00:43:18 【问题描述】:

我的客户多年来一直使用 MFC 应用程序。主要原因是他们的应用程序是与各种传感器进行实时交互的应用程序,其性能是他们成功的关键。

大约 10 年前,我使用 MFC 并迁移到 .NET。但如有必要,我愿意回到 MFC。但问题是它是否值得,现在是否有比 MFC 更好的东西。

我知道 C++ 是优化我们的应用程序所必需的,而且 MFC 是 Win32 API 的 OOP 包装器,可能是 Windows 上最快的 OOP UI API。

但我主要担心它的可测试性和复杂的 API。所以从长远来看,MFC 可能会减慢我们的速度。

你怎么看?是否有任何框架可以实现比使用 MFC 更好的性能?

更新:至于所需的性能,我没有确切的数字,但我在其操作中看到了一个应用程序。它几乎从每个移动的物体那里得到了各种类型的信号。我当时的猜测是不到 1/2 秒即可获取并显示每个信号的所有信号。但我可能是错的。

【问题讨论】:

WTL 呢?它基于 ATL,应该是 Windows API 的精简包装。 性能几乎总是被过度指定。几乎可以肯定,这里也是如此。如果您的系统可以容忍几毫秒的延迟,那么它就不是“实时的”。我不完全确定如何在 Windows 或 linux 上构建一个实际的实时系统。 @Paul:谈到原始性能,我认为它们或多或少是等价的,因为正如我所说,它只是 Windows API 的一个薄包装器(我也听说它可以内联比 MFC 好);但在这里我说的是图书馆设计“更好”。 如果你想要一个免费的库,你可以去 wxWidgets 【参考方案1】:

你可能想看看Qt。

网上充斥着MFC和Qt的比较;这是最近的一个:https://softwareengineering.stackexchange.com/questions/17490/comparing-qt-vs-mfc

【讨论】:

想添加关于 Qt 如何比 MFC 表现更好的任何参考资料? 我怀疑 Qt 参考是关于 API 的可测试性和简单性。性能不是 Qt 的已知问题,但当然所有 API 都有问题。坦率地说,如果问题是“性能:Qt 与 MFC”,它会立即作为副本关闭。 我扩展了帖子。谷歌搜索“qt vs mfc”会给你很多其他的文章。 我已经将 Qt 用于近乎实时的应用程序,包括图表(由于 GL 加速,它可以很好地处理)。性能不应成为问题。 @Paul:我怀疑你对 Qt 与 MFC 的关系是错误的,仅仅是因为你需要使用大量的周围代码来让 MFC 做一些有用的事情。但这一如既往地严重依赖于上下文。【参考方案2】:

假设(尽管问题中没有指定)您的应用程序是另一个传感器控制系统,它并不像您想象的那么重要。

基本上,您的架构应该将传感器通信保持在自己的线程中,该线程与应用的其余部分异步通信。因此,您主要是在检查您的潜在替代库是否对其多线程实现产生了不良影响。

要给出细节,我们需要细节:所需的响应时间、中断频率等等。但即使在这种情况下,我们也大多只是猜测(或为我们最喜​​欢的 API 进行宣传)。

我真正的建议是在“原型控件”中查看使用 .NET 获得的性能数据。您最近对 API 的熟悉应该可以让您相对快速地完成这项工作。

如果性能看起来无法接受,请在 Qt 或 WTL 或其他任何看起来合理的东西中做一个类似的原型。除非您可以利用来自客户端的大量现有控制代码,否则我会将 MFC 视为最后的手段。

【讨论】:

【参考方案3】:

MFC 有一些最佳替代方案。

    QT 是首选。但是对于商业发布来说,它的成本就稍微高了一点。

    wxWidgets,也是跨平台开源库的不错选择。

    Ultralight - 这是完全不同的,因为它是一个基于 html 的 UI 引擎,可在 HTML、css 和 javascript 的帮助下创建漂亮的应用程序。

【讨论】:

以上是关于比 MFC 更好的框架?的主要内容,如果未能解决你的问题,请参考以下文章

比若依更好的系统有吗

对于 Java 中的 RESTful 服务,JAX-RS 是不是比 Swing、Grails 或 Play 等 MVC 框架更好?

Andoid 更好的Android多线程下载框架

MFC应用程序框架入门(转)

Go中web框架比标准库有啥优势

MFC项目依赖 BCG框架示例