qt和c#怎么选_请问目前做windows桌面应用程序,MFC、QT、C#哪个更好?
回答問(wèn)題之前,先裝個(gè)逼——沒(méi)有主導(dǎo)過(guò)生命周期三年以上的桌面軟件項(xiàng)目的,閉嘴。你連一個(gè)桌面軟件項(xiàng)目的生命周期都沒(méi)經(jīng)歷過(guò),你憑什么做技術(shù)選型?憑信仰嗎?
裝逼結(jié)束,正文開(kāi)始。
首先,非主流技術(shù)和過(guò)時(shí)技術(shù)先淘汰掉,包括但不限于:delphi、mfc、c++ builder、gtk+、java系、易語(yǔ)言……
最終入圍的基本上就三種選擇:Web、Qt、C#。
首先說(shuō)Web,我們明確一點(diǎn),當(dāng)下的桌面軟件項(xiàng)目,必須具備完整的Web能力(包括開(kāi)發(fā)/部署/運(yùn)行/測(cè)試等),直觀的說(shuō)就是你的軟件中必須包含瀏覽器。尤其是企業(yè)軟件,發(fā)展到后期,除了核心功能之外,必然附帶大量的增刪改查模塊,這部分不用Web你會(huì)極其難受。有些人可能native用的挺熟練的,覺(jué)得不就是表格表單報(bào)表么?我用native一樣堆出來(lái)——相信我,你在浪費(fèi)生命。
Web必然入選,但是注意,Web入選不意味著electron入選。事實(shí)上如果不是互聯(lián)網(wǎng)公司的項(xiàng)目,我不建議使用electron。一方面,傳統(tǒng)公司不需要迭代那么快,他們前端力量也有限,出了問(wèn)題解決不了;另一方面,哪怕是互聯(lián)網(wǎng)項(xiàng)目,發(fā)展到后期,也不約而同地開(kāi)始約束前端隨意調(diào)用nodejs API的行為。
建議使用libcef提供Web能力,同時(shí)native封裝有限的API供Web調(diào)用。這里我不推薦使用框架原生的webview,比如QtWebEngine,以及winform自帶的WebBrowser組件,這些工具比較冷門,資料少,出了問(wèn)題不好排查,而且瀏覽器內(nèi)核版本也未必符合要求。
結(jié)論:libcef入選,electron淘汰,原生webview淘汰。
接下來(lái)考察C#和Qt,這兩個(gè)技術(shù)各有支持者,不是非黑即白的關(guān)系。比如我看韋大的答案下面很多人在爭(zhēng)論工控領(lǐng)域應(yīng)該用Qt還是C#,其實(shí)國(guó)內(nèi)工控領(lǐng)域的老大浙大中控,這兩個(gè)技術(shù)都在使用。
我個(gè)人比較推薦Qt,極其強(qiáng)大,跨平臺(tái),可以用C++單一語(yǔ)言(調(diào)試成本低),還有一些很貼心的功能,比如基于qss的換膚。不要覺(jué)得換膚不重要,實(shí)際上做項(xiàng)目賣軟件的公司經(jīng)常遇到這樣的需求,要么是甲方想用專有皮膚,要么是你接到的項(xiàng)目是OEM項(xiàng)目,中間商要求換膚。
但如果使用Qt,我不推薦使用Quick(Qml),太非主流,而且對(duì)比Web沒(méi)什么優(yōu)勢(shì)。建議能用Web的模塊就用Web,需要深度開(kāi)發(fā)的模塊使用QWidget配合OpenGL深度開(kāi)發(fā)。
結(jié)論:Qt入選,但是Quick淘汰。
C#能有一席之地,主要是因?yàn)閭鹘y(tǒng)。有些領(lǐng)域長(zhǎng)期以來(lái)就是使用C#開(kāi)發(fā),人才比較集中(C#人才確實(shí)比C++好招,而且便宜,也更不易跳槽),開(kāi)發(fā)效率也確實(shí)高。如果沒(méi)有跨平臺(tái)訴求,也不是前瞻性很強(qiáng)的項(xiàng)目,可以考慮沿用C#(關(guān)于前瞻性,多說(shuō)一句,新冷戰(zhàn)都要來(lái)了,你確定你的項(xiàng)目不需要跨平臺(tái)嘛)。
用了C#,還要選擇是用winform還是用WPF,按理說(shuō)這不該是個(gè)問(wèn)題——無(wú)腦WPF就完事兒了,畢竟開(kāi)發(fā)效率高,對(duì)于高分屏等新問(wèn)題微軟也會(huì)有相應(yīng)的支持。但是什么問(wèn)題只要涉及到“傳統(tǒng)”,就說(shuō)不清楚了,只能說(shuō)如果是新產(chǎn)品,不考慮技術(shù)資產(chǎn)繼承的話,建議WPF。
結(jié)論:WPF入選,winform你看著辦。
綜上,如果是我來(lái)作架構(gòu)師,通常情況下我會(huì)選擇Qt+libcef。兼顧強(qiáng)大功能與開(kāi)發(fā)效率,同時(shí)Qt和Web前端都是前景光明的主流技術(shù),社區(qū)力量強(qiáng)大,技術(shù)風(fēng)險(xiǎn)小。如果考慮到特定行業(yè)的技術(shù)積累(不光是你自己的積累,還有供應(yīng)商等等)和人才招聘,可以考慮WPF+libcef。
總結(jié)
以上是生活随笔為你收集整理的qt和c#怎么选_请问目前做windows桌面应用程序,MFC、QT、C#哪个更好?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ubuntu 两块硬盘挂载不上_win1
- 下一篇: java 类似xamarin_xamar