inyfee
V2EX  ›  问与答

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

  •  
  •   inyfee · Mar 25, 2015 · 32299 views
    This topic created in 4242 days ago, the information mentioned may be changed or developed.
    以前一直从事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 replies  •  2018-05-02 13:28:39 +08:00
    love
    love
    Mar 25, 2015
    1
    为什么不用web呢?桌面软件现在没什么优势了吧开发速度又慢
    em70
    em70
    Mar 25, 2015
    2
    桌面软件还是得win32,工具只有两个选择vc和delphi,不要用.net,存在部署问题.

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

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

    firefox是吗,chrome是吗,QQ是吗, 迅雷是吗,foobar是吗,sublime是吗
    ymy89757
    ymy89757
    Mar 26, 2015
    43
    @em70 先理解下什么是企业软件,什么叫民用软件
    面向的环境的不同与相同,对你的决策会有帮助哦
    em70
    em70
    Mar 26, 2015
    44
    @ymy89757 你回头看看我上面的发言再说话
    9xrtp7r1
    9xrtp7r1
    Mar 26, 2015
    45
    谁知道淘宝的千牛是用什么方式弄的,我知道他用的qt,并且很多界面都嵌入的网页,他是用的webkit吗,互相直接 和网页 如何通信的呢 附上千牛网址 http://www.taobao.com/market/work/portal/pc.php 我可不是发广告哦
    kalman03
    kalman03
    Mar 26, 2015
    46
    swing,lol
    mxonline
    mxonline
    Mar 26, 2015
    47
    @em70 你所列的那个是企业软件,我就是做.net的。企业行业软件.net开发的多的是,很多企业专用的运营系统就是.net的
    em70
    em70
    Mar 26, 2015
    48
    @mxonline 我列的是 chrome,firefox,QQ啊,这些你认为是企业软件?各种管理系统,收费系统这些企业软件当然适合.net,java开发.问题是楼主说的是面向普通人的桌面软件啊,你们给普通人做过软件吗?
    twor2
    twor2
    Mar 26, 2015
    49
    建议点NET
    mhycy
    mhycy
    Mar 26, 2015
    50
    Windows环境下.net是最方便快捷的选择,具体选用winform/wpf看需求。
    不推荐web开发,原因是浏览器兼容,参数过滤,JS性能问题会让你无比蛋疼~
    jamiesun
    jamiesun
    Mar 26, 2015
    51
    eclipse rcp
    Bitex
    Bitex
    Mar 26, 2015
    52
    WPF / node-webkit
    waytocode
    waytocode
    Jul 10, 2017
    53
    C#开发速度快,Qt 适合跨平台
    liquanhai
    liquanhai
    Jan 7, 2018 via Android
    54
    @mimzy 非常感谢,目前来看,快成为主流了
    ShareDuck
    ShareDuck
    May 2, 2018
    55
    企业桌面应用,妥妥的的.Net 啊,如果机器很旧很旧,就用 WinForm,否则就 WPF。
    .Net 的弱点是要先部署.Net Framework,性能不高,但这些问题对于企业应用都不是问题,要知道,企业应用,最大的问题是系统跟不上业务变化,最重要是开发快,尽量少些不必要的 Bug。
    而.Net 刚好适用,第一,.Net 有宇宙第一 IDE,开发方便快捷,而且现在开源生态也还不错,很多轮子都有了;第二,用域部署.Net 简直不要太方便,没有域用 ClickOne 也极其简单。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1779 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 87ms · UTC 17:22 · PVG 01:22 · LAX 09:22 · JFK 12:22
    ♥ Do have faith in what you're doing.