V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
yeelone
V2EX  ›  问与答

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

  •  
  •   yeelone · 2015-03-25 23:12:25 +08:00 · 30815 次点击
    这是一个创建于 3563 天前的主题,其中的信息可能已经有所发展或是发生改变。
    以前一直从事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
    @hjc4869 是的,我前段时间有尝试过用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。企业软件的话不在意大小和性能,开发速度才是最主要的。
    ooxxcc
        29
    ooxxcc  
       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.NET,觉得还不错,有时候觉得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   ·   实用小工具   ·   3193 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 12:45 · PVG 20:45 · LAX 04:45 · JFK 07:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.