qt和c#怎么选_请问⽬前做windows桌⾯应⽤程序,MFC、
QT、C#哪个更好?
回答问题之前,先装个逼——没有主导过⽣命周期三年以上的桌⾯软件项⽬的,闭嘴。你连⼀个桌⾯软件项⽬的⽣命周期都没经历过,你凭什么做技术选型?凭信仰吗?
结束,正⽂开始。
⾸先,⾮主流技术和过时技术先淘汰掉,包括但不限于:delphi、mfc、c++ builder、gtk+、java系、易语⾔……
最终⼊围的基本上就三种选择:Web、Qt、C#。
⾸先说Web,我们明确⼀点,当下的桌⾯软件项⽬,必须具备完整的Web能⼒(包括开发/部署/运⾏/测试等),直观的说就是你的软件中必须包含浏览器。尤其是企业软件,发展到后期,除了核⼼功能之外,必然附带⼤量的增删改查模块,这部分不⽤Web你会极其难受。有些⼈可能native⽤的挺熟练的,觉得不就是表格表单报表么?我⽤native⼀样堆出来——相信我,你在浪费⽣命。
Web必然⼊选,但是注意,Web⼊选不意味着electron⼊选。事实上如果不是互联⽹公司的项⽬,我不
建议使⽤electron。⼀⽅⾯,传统公司不需要迭代那么快,他们前端⼒量也有限,出了问题解决不了;另⼀⽅⾯,哪怕是互联⽹项⽬,发展到后期,也不约⽽同地开始约束前端随意调⽤nodejs API的⾏为。
建议使⽤libcef提供Web能⼒,同时native封装有限的API供Web调⽤。这⾥我不推荐使⽤框架原⽣的webview,⽐如QtWebEngine,以及winform⾃带的WebBrowser组件,这些⼯具⽐较冷门,资料少,出了问题不好排查,⽽且浏览器内核版本也未必符合要求。
结论:libcef⼊选,electron淘汰,原⽣webview淘汰。
接下来考察C#和Qt,这两个技术各有⽀持者,不是⾮⿊即⽩的关系。⽐如我看韦⼤的答案下⾯很多⼈在争论⼯控领域应该⽤Qt还是C#,其实国内⼯控领域的⽼⼤浙⼤中控,这两个技术都在使⽤。
我个⼈⽐较推荐Qt,极其强⼤,跨平台,可以⽤C++单⼀语⾔(调试成本低),还有⼀些很贴⼼的功能,⽐如基于qss的换肤。不要觉得换肤不重要,实际上做项⽬卖软件的公司经常遇到这样的需求,要么是甲⽅想⽤专有⽪肤,要么是你接到的项⽬是OEM项⽬,中间商要求换肤。
web前端和java哪个难但如果使⽤Qt,我不推荐使⽤Quick(Qml),太⾮主流,⽽且对⽐Web没什么优势。建议能⽤Web的模块就⽤Web,需要深度开发的模块使⽤QWidget配合OpenGL深度开发。
结论:Qt⼊选,但是Quick淘汰。
C#能有⼀席之地,主要是因为传统。有些领域长期以来就是使⽤C#开发,⼈才⽐较集中(C#⼈才确实⽐C++好招,⽽且便宜,也更不易跳槽),开发效率也确实⾼。如果没有跨平台诉求,也不是前瞻性很强的项⽬,可以考虑沿⽤C#(关于前瞻性,多说⼀句,新冷战都要来了,你确定你的项⽬不需要跨平台嘛)。
⽤了C#,还要选择是⽤winform还是⽤WPF,按理说这不该是个问题——⽆脑WPF就完事⼉了,毕竟开发效率⾼,对于⾼分屏等新问题微软也会有相应的⽀持。但是什么问题只要涉及到“传统”,就说不清楚了,只能说如果是新产品,不考虑技术资产继承的话,建议WPF。
结论:WPF⼊选,winform你看着办。
综上,如果是我来作架构师,通常情况下我会选择Qt+libcef。兼顾强⼤功能与开发效率,同时Qt和Web前端都是前景光明的主流技术,社区⼒量强⼤,技术风险⼩。如果考虑到特定⾏业的技术积累(不光是你⾃⼰的积累,还有供应商等等)和⼈才招聘,可以考虑WPF+libcef。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论