前言
作为一个技术总监,曾主导过数个桌面的应用程序,从早期的 MFC 一直到现在的 WPF 企业应用,说实话每一项技术都是有其独特的价值和应用场景。
接下来我将从技术架构、性能优化,和项目实战等多个维度,介绍一下这三个框架的关系。
一、技术架构分析
1、MFC,Win32 API的 C++ 封装
核心原理:MFC 本质就是对 Win32 API 的封装,采用了文档/视图的架构模式。能直接操作 Windows 消息,为程序员提供了最接近 OS 底层的开发经验。
内存管理策略
2、WinForm,托管代码的 RAD 框架
设计哲学:WinForm 是基于 .Net Framework 的 Windows Forms 命名空间命名的,事件驱动的模型架构。为程序员提供基于拖拉拽形式操作的控件,大大提高了开发速度。
WinForm 同时也支持自定义控件的开发,增强了控件的复用性。
3、WPF,XAML 驱动的现代化架构
核心理念:依赖属性和数据绑定
WPF 基于 DirectX 渲染引擎,采用 MVVM 架构模式,核心技术依赖属性系统和强大的数据绑定机制。
WPF 应用程序启动流程和 MVVM 绑定机制
MVVM 绑定机制核心要点
DataContext 设置:在文件中设置窗口的 DataContext 为 ViewModel 实例
属性绑定:在 XAML 中使用{Binding PropertyName}语法绑定 ViewModel 属性
命令绑定:按钮等控件通过 Command 属性绑定 ViewModel 中的 ICommand 实现
二、性能对比
曾经测试过,在功能相同的情况下,无论是 启动时间,内存占用率,CPU 使用率,画面渲染性能:MFC > WInForm > WPF
这个结论大家了解就好了,不用纠结。
三、实际项目中的选型
1、MFC,现在使用这个框架的项目已经很少了,除非以下几个场景
系统级别工具的开发、对性能要求极高的应用、需要与系统深度集成的项目以及历史遗留的项目。
我的建议是能不用 MFC 就不用 MFC,这个框架自 2005 年之后就没有在维护了。
2、WinForm 应用场景
WinForm 适合相对比较小的项目,比如一些数据录入查询啊、快速原型开发啊、上位机软件和一些传统桌面应用迁移程序。
3、WPF 使用场景
相对比较的企业级应用主要是 MVVM 架构的应用,易于开发和维护,一些数据可视化、多媒体应用的开发,以及一些复杂的 UI 交互系统等。
四、未来前景分析
1、MFC
这个框架在系统工具和驱动程序等领域依然很有市场,但是用的企业不多,会的人也不多,不过薪资还是很有竞争力的。
2、WinForm
被很多人认为只是很小项目,因为这个框架是事件驱动的,耦合度比较高,维护起来比较麻烦,不过快速开发和快速原型实践领域还是用的很多的。
我就用 WinForm 开发了很多实用的小工具,主要是开发速度快。
3、WPF
新特性加持,企业化应用的首选。
4、新兴技术
比如:Blazor Desktop、MAUI、Avalonia 等技术,大家也不要错过,作为一个程序员虽然不支持盲目地追求新技术,但是还是要了解的。
其实从一个程序的角度出发,技术没有好坏,只有适合与否,与业务高度契合的框架才是好的框架。
我们平时要做的事就是:理解每一种技术的特点,根据实际需求做出选择,持续了解新技术,积累项目经验,做一个有准备的人。你说呢?
最后
如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。
也可以加入微信公众号 [DotNet技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!
优秀是一种习惯,欢迎大家留言学习!
作者:全小鱼
出处:zhihu.com/question/435492936/answer/1936037106221839580
声明:网络内容,仅供学习,尊重版权,侵权速删,歉意致谢!