开发 windows 桌面软件,现在主流用什么技术? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yeelone
V2EX    问与答

开发 windows 桌面软件,现在主流用什么技术?

  •  
  •   yeelone 2015-03-25 23:12:25 +08:00 31261 次点击
    这是一个创建于 3860 天前的主题,其中的信息可能已经有所发展或是发生改变。
    以前一直从事web开发,后来在公司里因各种原因我需要开发桌面应用程序 ,但我完全没有桌面开发经验,上次在V2er 的朋友推荐下我学习快手aauto并快速完成了几个小工具,感觉学习新技术确实拓宽了我的视野。
    现在我的目标是开发企业软件,就想学习一下主流的桌面开发技术。请问现在主流的桌面开发技术是什么 ?


    经过一翻了解之后 ,我发现有c# winform ,c# wpf ,Qt or PyQt 。我没学过c#,对c++只是好几年前学过点皮毛。对于 Qt,我觉得 C++ 是难点,而pyqt 是gpl协议,似乎不利于开发商业软件?对于 C#我关心的问题是对windows xp 的支持,我感觉我的目标用户可能大部分仍然在使用windows xp 。
    如果选择c#,那么 是应该使用winform ,还是wpf ? 是否有出版的书推荐 ? 谢谢
    55 条回复    2018-05-02 13:28:39 +08:00
    love
        1
    love  
       2015-03-25 23:29:21 +08:00
    为什么不用web呢?桌面软件现在没什么优势了吧开发速度又慢
    em70
        2
    em70  
       2015-03-25 23:35:22 +08:00
    桌面软件还是得win32,工具只有两个选择vc和delphi,不要用.net,存在部署问题.

    企业软件最好还是基于web
    yeelone
        3
    yeelone  
    OP
       2015-03-25 23:36:54 +08:00
    @love 有尝试过web的方式,但还是感觉不实际 。我是希望目标使用人群下载好我的软件之后可以直接使用的,中间不会有太麻烦的安装过程。web的话,让用户自己部署,会很麻烦吧。
    hjc4869
        4
    hjc4869  
       2015-03-25 23:42:12 +08:00 via iPhone   3
    桌面还是老老实实C#吧,看需求选择WPF或者Winforms
    或者干脆激进一点,直接上win10的UAP?

    另外我每天默念100遍,拿Web应付Windows的软件都去死吧,死干净点。这是作为用户的想法。拿web应付的多数吃内存是native app的几倍甚至几十倍,对高dpi支持和新技术支持也差,再加上写出来的烂js跑的也卡,体验简直差到爆。
    想做就认真做,不想做就别做。
    yeelone
        5
    yeelone  
    OP
       2015-03-25 23:42:28 +08:00
    @em70 由于没有相关经验,我大概设想以下这种做法:使用golang 作为服务端,前端由html,js,css开发。因golang可以编译成exe,所以部署起来方便。之后再使用某种桌面GUI技术写一个简单的服务管理程序 ,提供一个启动服务(启用golang服务端程序)和关闭服务的按钮。大概是这种方案,是否觉得可行? 但有无觉得比较麻烦?
    yeelone
        6
    yeelone  
    OP
       2015-03-25 23:44:54 +08:00
    @hc4869 是的,我前段时间有尝试过用Web来开发windows软件,但觉得太麻烦不实际,所以放弃之后学习快手aauto 快速开发了几个小工具。因现在时间空闲下来,所以是想学习一下主流的桌面软件开发技术。
    yeelone
        7
    yeelone  
    OP
       2015-03-25 23:47:21 +08:00   1
    @hjc4869 但有个问题想请问一下,c#写的软件 ,需要如何做,才能完整的跑在windows xp 上? 在windows xp 上需要安装 .net 哪个版本。因为我听说c# 有.net 版本兼容问题,所以略有犹豫。
    hjc4869
        8
    hjc4869  
       2015-03-25 23:47:27 +08:00 via iPhone
    @yeelone 针对XP建议用winforms,虽说wpf能跑,但是XP上真的很慢很慢,而且用XP的电脑硬件配置也不可能特别好。
    mimzy
        9
    mimzy  
       2015-03-25 23:47:31 +08:00
    只针对最后一个问题做回答:如果选择 C#,建议使用 WPF,但是我没测试过 XP 的兼容性。书籍推荐《WPF 编程宝典:使用 C# 2012 和 .NET 4.5》,不过貌似被翻译成翔了,我经常看不懂,你可以先看看《深入浅出 WPF》和《WPF 揭秘》热热身。至于为什么推荐 WPF,主要在于我个人不喜欢 WinForm 这种拖控件的技术,WPF 虽然要硬着头皮写 XAML 但是比较优雅(设计器不好用啊)。
    其实最关键的看你们公司的需求,然后选择合适的技术……
    hjc4869
        10
    hjc4869  
       2015-03-25 23:49:02 +08:00 via iPhone
    @yeelone xp最多支持到.net 4.0。在安装包里带上大约40MB的.net安装包或者带上mono都行
    ksupertu
        11
    ksupertu  
       2015-03-25 23:56:48 +08:00 via iPad
    想简单点以及很爽的开发就wpf+blend studio
    想追求性能就c++加duilib
    crab
        12
    crab  
       2015-03-26 00:02:40 +08:00
    会web开发,直接下个E语言就行了。
    em70
        13
    em70  
       2015-03-26 01:42:48 +08:00
    @yeelone 绕那么大个圈子,delphi,VB很简单啊,不写一行代码就能做出漂亮的界面,玩玩就能做东西
    weisoo
        14
    weisoo  
       2015-03-26 03:10:11 +08:00 via iPhone
    @em70 靠,一言惊醒梦中人,我也像楼主这样发过贴子求问用什么方法开发win程序好,听你一说才想起还有传说中上古时代的VB,并且我还学过VB
    weisoo
        15
    weisoo  
       2015-03-26 03:10:48 +08:00 via iPhone
    @crab E语言是什么?
    dalaomj
        16
    dalaomj  
       2015-03-26 04:19:00 +08:00
    主流么,工业领域,持续维护更新的MFC仍然一大把。
    dalaomj
        17
    dalaomj  
       2015-03-26 04:21:01 +08:00
    易语言在非专业领域应用很广。民间好多小玩意易语言写的。但易语言误报严重,编译出的EXE也较大。所以商业领域不太适合。
    yfdyh000
        18
    yfdyh000  
       2015-03-26 04:52:36 +08:00
    @dalaomj 易语言编译文件大的问题不是解决了吗,静态编译,用VC编译器。
    Bluek404
        19
    Bluek404  
       2015-03-26 05:05:28 +08:00 via Android
    关于go做后端那个可以看一下
    https://github.com/go-nwui/nwui
    当然这个坑好长时间没填了
    msg7086
        20
    msg7086  
       2015-03-26 07:34:05 +08:00
    易语言挺好用的,十多年前没VS的时候一直用易语言做桌面开发。
    leeyanjie
        21
    leeyanjie  
       2015-03-26 08:13:27 +08:00 via iPhone
    pyqt有商业授权可以买,也可以考虑用pyside,支持LGPL授权的python Qt binding.用法和pyqt差不多.还有pygtk,wxpython可以考虑。
    FrankFang128
        22
    FrankFang128  
       2015-03-26 08:19:35 +08:00 via Android
    主流都是内嵌浏览器 webkit
    leeyanjie
        23
    leeyanjie  
       2015-03-26 08:20:44 +08:00 via iPhone
    想要拖控件的话,qt有qtdesigner,wxwidgets也有。如果不是只需要在windows平台下运行,最好还是用跨平台的gui方案。
    dong3580
        24
    dong3580  
       2015-03-26 08:25:45 +08:00 via Android
    建议c#,xp系统只需要安装对应的运行库,不存在什么兼容性问题。wpf效果可能在xp上不能很好的展示,winform即可。代码和asp.net雷同,只不过一个是前端稍微一点区别哈.
    knightluffy
        25
    knightluffy  
       2015-03-26 09:01:52 +08:00
    @em70 .net有部署问题,说明你没打过安装包。。
    shakoon
        26
    shakoon  
       2015-03-26 09:06:07 +08:00
    vb6.0,十几年了都不过时,哈哈哈哈
    zwzmzd
        27
    zwzmzd  
       2015-03-26 09:12:41 +08:00 via Android
    @yeelone 部署的话把运行环境打包就行,开启也只是一句话
    zcbenz
        28
    zcbenz  
       2015-03-26 09:23:10 +08:00
    Slack for Windows用的atom-shell。企业软件的话不在意大小和性能,开发速度才是最主要的。
    47jm9ozp
        29
    47jm9ozp  
       2015-03-26 09:30:12 +08:00
    nw.js atom-shell
    hjc4869
        30
    hjc4869  
       2015-03-26 09:53:42 +08:00
    @zcbenz 所有Slack的Windows版烂到爆了。。
    cxe2v
        31
    cxe2v  
       2015-03-26 09:53:50 +08:00
    如果你不能控制客户机的环境,用winform比较好,不然可以使用WPF,效果刚刚的
    hjc4869
        32
    hjc4869  
       2015-03-26 09:54:04 +08:00
    @zcbenz
    -所有
    +所以
    b821025551b
        33
    b821025551b  
       2015-03-26 09:59:27 +08:00   1
    C#开发时把.NET平台改成2.0,只要不用高级的东西大部分都能跑,xp那边应该已经有.NET2.0,没有的话打包程序时封装一个就好了
    Comdex
        34
    Comdex  
       2015-03-26 10:00:04 +08:00
    还是aauto
    learnshare
        35
    learnshare  
       2015-03-26 10:25:49 +08:00
    C# .Net Qt 不都是很亲切的 Windows GUI 开发方式么
    asan2006
        36
    asan2006  
       2015-03-26 10:44:18 +08:00
    C#和VB.NT,觉得还不错,有时候觉得VB.NET的效率更高~
    em70
        37
    em70  
       2015-03-26 10:50:34 +08:00 via Android
    @knightluffy 安装包需要额外加几十M的环境,说明你没做过面向普通用户的桌面软件。
    g00001
        38
    g00001  
       2015-03-26 11:01:06 +08:00   3
    现在很多桌面软件都是客户端软件,一半功能都是在服务器上提供接口,云 + 端的模式,客户端很多时候都是一个简单的壳子。所以掌握服务端语言是很有必要的,python,nodejs 都不错,php当然也可以,至于C#还是算了吧。

    真正想去学点桌面方向的,最值得去学的还是C语言,其次是C++。原因很明显,C语言最简单,投入的学习成本最少,是各种语言的基石,C/C++玩的好,无论你用什么语言有帮助,桌面上好一点的软件基本都是C,C++写的。

    aauto对C,C++的支持也很好,范例里就有很多调用C/C++开源组件的例子。aauto 的优势是小轻快,不需要投入太多精力去学,有编程基础上手很快,开发工具加标准库全部范例才6.5MB. 而且动态语言用起来也灵活简便,写界面,写EXE很方便。

    但是 delphi,vb,C#这些工具相对比较重,学习要投入大量的精力,C#的库非常多,但也需要惊人的记忆力,有个半年不玩就可能会忘的干干净净没留下多少属于自己的东西。C# 不错但是优势更多是在服务端或者企业应用,写小桌面软件会把简单的事搞复杂,写桌面软件不是C#的长项。

    delphi,vb这些过气了除了维护老项目不值得去学,即使这些语言的全盛时期也有一定的吵作吹捧,谁用谁知道经不起时间的考验。已经证明是坑的,不要再往坑里钻。

    道听途说终究是虚的,有时候很多人说好用的东西,最后你钻进去会发现一个又一个的坑,很多人乱骂的东西实际上用起来会很爽,网上的评价很多随口爆出不负责任,而且每个人的思维模式开发习惯各有不同,适合的工具也不同,所以别人的观点只能作为参考,最实际的:自己一个一个的去用一下,感受一下,用的爽的就是适合你的。
    knightluffy
        39
    knightluffy  
       2015-03-26 11:28:29 +08:00
    @em70 现在网速这么快,需要考虑吗?而且现在大部分都是win7了,默认就带framework。。你这么在乎大小,为什么不直接用windows api写,那样更小哦。。
    ksc010
        40
    ksc010  
       2015-03-26 11:50:20 +08:00
    loading
        41
    loading  
       2015-03-26 12:05:21 +08:00 via Android
    aauto对于开发企业软件也是没问题的。
    配合htmlayout,ui效果和没差别。
    em70
        42
    em70  
       2015-03-26 12:46:27 +08:00 via Android
    @knightluffy 不是我在乎,你自己看看那些热门软件或者你平时用得多的软件,有几个是.net开发的。

    firefox是吗,chrome是吗,QQ是吗, 迅雷是吗,foobar是吗,sublime是吗
    ymy89757
       43
    ymy89757  
       2015-03-26 12:50:52 +08:00
    @em70 先理解下什么是企业软件,什么叫民用软件
    面向的环境的不同与相同,对你的决策会有帮助哦
    em70
        44
    em70  
       2015-03-26 13:21:05 +08:00
    @ymy89757 你回头看看我上面的发言再说话
    9xrtp7r1
        45
    9xrtp7r1  
       2015-03-26 16:33:00 +08:00
    谁知道淘宝的千牛是用什么方式弄的,我知道他用的qt,并且很多界面都嵌入的网页,他是用的webkit吗,互相直接 和网页 如何通信的呢 附上千牛网址 http://www.taobao.com/market/work/portal/pc.php 我可不是发广告哦
    kalman03
        46
    kalman03  
       2015-03-26 16:51:56 +08:00
    swing,lol
    mxonline
        47
    mxonline  
       2015-03-26 19:02:19 +08:00
    @em70 你所列的那个是企业软件,我就是做.net的。企业行业软件.net开发的多的是,很多企业专用的运营系统就是.net的
    em70
        48
    em70  
       2015-03-26 19:18:25 +08:00
    @mxonline 我列的是 chrome,firefox,QQ啊,这些你认为是企业软件?各种管理系统,收费系统这些企业软件当然适合.net,java开发.问题是楼主说的是面向普通人的桌面软件啊,你们给普通人做过软件吗?
    twor2
        49
    twor2  
       2015-03-26 19:58:56 +08:00
    建议点NET
    mhycy
        50
    mhycy  
       2015-03-26 20:37:07 +08:00
    Windows环境下.net是最方便快捷的选择,具体选用winform/wpf看需求。
    不推荐web开发,原因是浏览器兼容,参数过滤,JS性能问题会让你无比蛋疼~
    jamiesun
        51
    jamiesun  
       2015-03-26 21:13:20 +08:00
    eclipse rcp
    Bitex
        52
    Bitex  
       2015-03-26 21:22:02 +08:00
    WPF / node-webkit
    waytocode
        53
    waytocode  
       2017-07-10 13:20:52 +08:00
    C#开发速度快,Qt 适合跨平台
    liquanhai
        54
    liquanhai  
       2018-01-07 10:15:21 +08:00 via Android
    @mimzy 非常感谢,目前来看,快成为主流了
    ShareDuck
        55
    ShareDuck  
       2018-05-02 13:28:39 +08:00
    企业桌面应用,妥妥的的.Net 啊,如果机器很旧很旧,就用 WinForm,否则就 WPF。
    .Net 的弱点是要先部署.Net Framework,性能不高,但这些问题对于企业应用都不是问题,要知道,企业应用,最大的问题是系统跟不上业务变化,最重要是开发快,尽量少些不必要的 Bug。
    而.Net 刚好适用,第一,.Net 有宇宙第一 IDE,开发方便快捷,而且现在开源生态也还不错,很多轮子都有了;第二,用域部署.Net 简直不要太方便,没有域用 ClickOne 也极其简单。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1065 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 18:28 PVG 02:28 LAX 11:28 JFK 14:28
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86