V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
JustinL
V2EX  ›  Windows

请教 Windows 桌面开发选择

  •  1
     
  •   JustinL · 2023-12-15 12:00:02 +08:00 via iPhone · 16411 次点击
    这是一个创建于 379 天前的主题,其中的信息可能已经有所发展或是发生改变。
    先说一下背景:建筑行业公司,内部工程师用,因此只需要 Windows 即可,同时公司所有电脑已经是 Win11 ,不用兼容 xp 那种包袱,可以考虑上最新的技术。内部使用铺开后如果反馈不错,有可能对外销售。

    做了一些 study ,感觉主要是这几种:
    1. Delphi/Lazarus 。在前公司用过,确实很方便,但是 Delphi 需要授权,Lazarus 社区也比较小,领导不喜欢,pass
    2. C#+WPF 。主要担心被反编译问题,但是貌似很多软件也是 C#,请问是否多虑?搜了一下没有太好的解决方案。
    3. C++ qt 。主要担心上手难度问题,团队没写过 C++,不过兴趣很大,就是怕交付时间不能保证。
    4. C#写界面,C++写核心算法。不知道里面有没有什么调用的坑?

    限定在 Windows 就行了,不需要讨论跨平台。

    陷入选择困难症了……请有经验的大佬们指点一二~
    第 1 条附言  ·  2023-12-15 12:43:35 +08:00

    经提醒,qt可能也有授权问题。我之前一直理解是动态链接就没问题,刚马上搜了一下,情况可能会比较复杂,因为qt使用的协议很多,不同模块有可能不同。

    第 2 条附言  ·  2023-12-19 13:30:54 +08:00

    感谢诸位的帮助🙏

    准备使用C# + Avalonia,尽可能地使用 aot 编译。

    但正如我在留言中提及,私心希望学点新东西,所以自己会学一下 go + wails,希望下次选型能用上。

    再次感谢大家。

    134 条回复    2023-12-17 21:18:23 +08:00
    1  2  
    jgh004
        101
    jgh004  
       2023-12-15 16:33:30 +08:00
    @JustinL
    想要快,c# winform , 商业的可以用 devexpress 控件,界面中规中矩。
    想要界面好看,用 Avaloinia ,相当于 wpf.
    防反用基于虚拟机的混淆工具。
    zggsong
        102
    zggsong  
       2023-12-15 16:40:21 +08:00
    WPF
    buaacss
        103
    buaacss  
       2023-12-15 16:50:45 +08:00
    WPF 是最好用的。不过如果你真想看看其它的 UI 框架的话,我推荐 gaclib https://gaclib.net/contact.html

    照着 demo 糊一个简单的应用非常容易。
    没有授权问题,除非你要改 gaclib 本身的代码。
    纯 C++,反编译困难。
    遇到问题可以直接加群问。
    joyhub2140
        104
    joyhub2140  
       2023-12-15 17:01:00 +08:00
    @liyafe1997

    QT 中国法务部不是这样子想的
    joyhub2140
        105
    joyhub2140  
       2023-12-15 17:06:52 +08:00
    flutter 吧,不做涉及到 OS 底层冷门 API 的 desktop 应用,这个绝对可以满足。
    yuyue001
        106
    yuyue001  
       2023-12-15 17:26:29 +08:00
    可以试试 wails ,逻辑用 go 写,UI 用网页。

    安装包小,而且性能好。

    https://wails.io/zh-Hans/
    NPC666
        107
    NPC666  
       2023-12-15 17:34:37 +08:00 via Android
    可以试试 Rust+Tauri ?
    aLazarus
        108
    aLazarus  
       2023-12-15 17:50:12 +08:00
    webview2 ?
    qaz168000
        109
    qaz168000  
       2023-12-15 17:51:42 +08:00
    靠谱的选择只能是 2 和 3 了,hold 住就用 3 ,一般情况直接选 2...
    asm
        110
    asm  
       2023-12-15 17:54:44 +08:00
    不懂开发,但是谈到反编译 c#,确实不堪,跟 java 一样,拖进去就是源码,除了混淆,好像也没啥好的方案。
    asm
        111
    asm  
       2023-12-15 17:57:56 +08:00
    @asm 但是 c++,其实也一样,不过门槛高点,对于我们来说,不加 vm 的 cxx ,也如同源码。当然 vm 的,也看看加的点对不对。所以,前期没有自己核心的算法或者牛逼的竞争力的东西,反不反编译没啥区别,再着最好的方法就是注册专利,现在流行这个,都不 vm 了。注册专利,告一个准一个。
    2zhimazhima2
        112
    2zhimazhima2  
       2023-12-15 18:51:29 +08:00
    可以用 WPF+CLR+c++
    jsq2627
        113
    jsq2627  
       2023-12-15 18:56:57 +08:00 via iPhone
    核心逻辑放服务端。客户端无论是 native 还是 web 随意,反正都能被逆向。
    tutudou
        114
    tutudou  
       2023-12-15 19:37:42 +08:00
    直接 c#吧,其实界面也是很麻烦的,如果语言界面生态不完整的话,会非常的难受。
    lizhenjia569
        115
    lizhenjia569  
       2023-12-15 19:51:23 +08:00
    pyside6 走起 出活快 LGPL 协议
    mmdsun
        116
    mmdsun  
       2023-12-15 19:55:48 +08:00 via iPhone
    在这里选,微软官方推荐的技术栈:
    https://learn.microsoft.com/zh-cn/windows/apps/get-started
    levelworm
        117
    levelworm  
       2023-12-15 20:54:41 +08:00
    @JustinL 这个做法是正确的。只要能凑乎交货,那是技能学得越多越好。
    akira
        118
    akira  
       2023-12-16 00:33:02 +08:00
    建筑行业? 涉及到 CAD 之类的么。。
    u823tg
        119
    u823tg  
       2023-12-16 00:33:12 +08:00
    Avalonia aot 就行
    sofukwird
        120
    sofukwird  
       2023-12-16 00:44:17 +08:00 via Android
    我建议你选 golang ,java 和 c#这种可以以 jar 形式发布包的很快你就会碰到收费库,而且无法自己修改审查
    hez2010
        121
    hez2010  
       2023-12-16 03:20:16 +08:00 via Android
    c# + avalonia ,然后用 nativeaot 编译。这样就不用担心反编译问题了。
    Aloento
        122
    Aloento  
       2023-12-16 05:37:29 +08:00
    @shijingshijing #12 微软找你收诽谤费还差不多
    Aloento
        123
    Aloento  
       2023-12-16 05:40:53 +08:00
    C# 不用再考虑了
    tux
        124
    tux  
       2023-12-16 08:35:33 +08:00
    WebView2
    encro
        125
    encro  
       2023-12-16 09:23:09 +08:00
    当然是 wpf 。。。

    公司有 qt,wpf 项目,我也写过,你不涉及底层较多 C++库的话,就 wpf 吧。

    如果底层需要用很多 C++技术,那么用 qt 也可以。。。Qt5.9 的协议还行。

    可以结合你需要用到的底层库来考虑。
    encro
        126
    encro  
       2023-12-16 09:27:34 +08:00
    不用太考虑反编译问题,
    钉钉微信很多还是基于 webkit 呢,
    对方没必要要你源码,
    只要学你交互,
    找个外包实现你一套也不要多少成本的。
    JustinL
        127
    JustinL  
    OP
       2023-12-16 09:50:15 +08:00 via iPhone
    @u823tg
    @hez2010
    AOT 是否 .NET 8 才很好地支持?
    JustinL
        128
    JustinL  
    OP
       2023-12-16 09:51:21 +08:00 via iPhone
    @akira 有可能涉及三维模型的展示
    nevermoreluo
        129
    nevermoreluo  
       2023-12-16 11:47:42 +08:00
    很快啊,几乎没有犹豫,啪的一下就选了 wpf

    没写过 c++的团队,还是建议 wpf 好用。
    不是担心不好写啥的,大多数情况 c with class 硬搞都可以搞。
    但是所有人都摸石头过河,没有规范到头来一堆问题。
    不仅仅是开发成本,维护成本也是成本。
    如果有得选当然选 wpf ,人生苦短。
    当然如果只有一个人写,养老的那么选 c++ (doge ,狗头保命
    hez2010
        130
    hez2010  
       2023-12-16 13:19:41 +08:00 via Android
    @JustinL 7 其实就可以了,不过 8 是 lts 所以建议用 8 。
    daokedao
        131
    daokedao  
       2023-12-16 21:58:36 +08:00
    wails 看着不错
    tuomasi
        132
    tuomasi  
       2023-12-16 22:22:22 +08:00 via iPhone
    只选 mfc
    8jinmuyan8
        133
    8jinmuyan8  
       2023-12-17 04:03:05 +08:00 via Android
    slint + rust or c++
    cooldays
        134
    cooldays  
       2023-12-17 21:18:23 +08:00
    5. C#写界面(不清楚 C# Winform/WPF 界面程序是否支持 AOT), 然后用 C#写核心算法, 然后用 AOT 编译后, 看不到算法的源码
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2554 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 04:24 · PVG 12:24 · LAX 20:24 · JFK 23:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.