桌面客户端框架技术选型

2023-05-16

摘自 技术怪咖 欧阳森林
作为客户端的架构选型主要面临以下几个方面的需求:

1.开发速度快,能够快速迭代,快速试错

2.客户端能够跨平台,同时适应Windows和Mac平台

3.用户界面友好,满足用户对界面的苛求

4.能够与快速与第三方的C++应用、Web应用集成

5.客户端安装包大小适中,减少用户的下载和安装时间

6.支持XP系统(国内还有近10%的用户是XP系统)

7.最大化利用公司现有的开发人员,减少因为技术选型引起的大规模人员变动

客户端的开发技术/框架,主要以下有几种:

1.纯Native开发, C++/C#/duilib+C++(Windows), Objective-c(Mac)

2.Qt(Windows/Mac)

3.NW.js/Electron(Windows/Mac)

4.CEF(Windows/Mac)

下面分别就这几种开发技术/框架,分析其适用的场景和优缺点
1.Native开发

在桌面客户端开发中,纯Native开发是一直沿用至今,也是使用最多的技术。使用Native开发,能够实现最好的性能,可以比较容易的与第三方的C++应用集成。

优点:

•客户端性能比较好

•安装包比较小

•Windows比较容易兼容XP

缺点:

•界面开发复杂,开发周期长,无法实现快速迭代

•跨平台开发困难,需要针对Windows和Mac分别开发,人员投入大,后期维护困难

纯Native开发的优缺点,使得其适用于客户端性能要求高、界面简单、客户端安装包小、开发人员富足等场景。

2.Qt一直以来被许多用户作为跨平台客户端开发的首选,其功能强大、支持的操作系统丰富、与C++结合紧密,其在某些特定领域(如嵌入式领域、军工、安防监控领域等)非常受欢迎。
在这里插入图片描述
优点:

•支持的操作系统丰富、跨平台性好

•性能比较好,接近纯Native开发的性能

•功能丰富、具有各种成熟类库

缺点:

•Qt开发人员不足,市场上Qt的开发人员一直都很少

•库太大,导致安装包也会过大

•Qt学习成本高,需要花费很多的时间和成本才能达到熟练开发的程度

•界面开发效率不高,满足不了互联网快发迭代的要求

•Qt使用GPL授权协议,需要商业授权协议才能做商业应用

从使用的情况来看,Qt作为跨平台的桌面端开发框架,有其有力的方面,但缺点也制约了其快速发展和在客户端开发的大规模使用。

3.NW.js/Electron

随着PC机不断提升的机器性能以及H5标准的发展,利用JS语言依靠Browser为载体的B/S体系软件,有着很强的交互表现力,使用Html/JS作为UI的开发语言,可以十分高效快速的完成各种复杂界面(尤其是各种动画效果)开发。

随着Nodejs和Chromium的CEF越来越成熟,出现了将Nodejs与Webkit集成的开源框架,比较成熟的有NW.js(前身node-webkit)和Electron(前身atom-shell), 该类型的框架既能使用Html/JS来开发UI界面,又能集成C++库来完成大计算量的任务,使得开发基于Web和Native混合的应用非常方便。
在这里插入图片描述

NW.js和Electron相比,各有优缺点,对比如下表:
在这里插入图片描述
在这里插入图片描述

由于集成了Node.js和Webkit,以及丰富的Node.js第三方库,NW.js和Electron提供了完全使用Javascript来开发客户端的能力。只要熟悉前端Web开发,就能迅速开发出与传统客户端相媲美的客户端软件,开发速度和功能都能满足目前互联网时代的要求,大家的前端开发人员储备,海量的Web 框架和UI组件,使得它们成为了目前最炙手可热的客户端开发框架。

Electron和NW.js相比较来说,Electron的发展更快、bug更少、贡献者更多、社区更活跃。参考知乎上的某篇问答: 维护一个大型开源项目是怎样的体验? - zcbenz 的回答 ,根据NW和Electron的作者自己的回答,显然Electron比NW.js更好。如果不考虑支持XP系统,Electron更适合作为客户端的框架。

在这里插入图片描述

优点:

•跨平台性好,可以同时支持Windows、Mac和Linux

•开发速度快,能够快速构建产品推向市场

•前端人员储备丰富,招聘开发人员容易

•框架开源,升级比较快

从开发桌面客户端的便捷性、跨平台性等来看,NW.js和Electron几乎满足互联网时代的客户端架构需求,但它们也存在一些不足。

•Electron支持的最低Windows版本是Windows 7, 当开发的产品需要支持XP系统时,只能选用NW.js

•NW.js和Electron对透明窗口支持不好,NW.js支持Vista、Electron支持Windows 7以上的系统,并且必须在DWM(Desktop Window Manager)打开的时候才能实现透明窗口,NW.js和Electron的透明窗口无法调整大小,Electron在Mac上,透明窗口的阴影显示不出来

•由于集成了Webkit浏览器,客户端安装包过大

不考虑实现透明窗口,Nw.js和Electron是目前桌面客户端跨平台方案中最廉价和最通用的方案,因此,在做客户端框架选型时,可以优先考虑NW.js和Electron。

在这里插入图片描述

4.CEF

Chromium Embedded Framework (CEF)是个基于Google Chromium项目的开源Web browser控件(俗称谷歌亲儿子),支持Windows, Linux, Mac平台, 其包含C/C++程序接口,能够完美的与C++库集成,完善的支持Html5 Web页面开发,并且可以通过修改编译选项和源代码后编译的方式来实现剪裁CEF和提供原CEF没有的功能,定制自己的窗口类型。

优点:

•CEF可以通过编译和修改源代码的方式来定制

•可以通过C++控制窗口类型,支持透明窗口

•能够使用最新的CEF来兼容最新的Javascript标准和CSS,或者固定CEF的版本来支持Windows XP

•底层与C++集成容易

•可以使用Javascript来开发UI,C++实现大计算量的任务

缺点:

•与操作系统相关的功能,如读取注册表、写文件等功能,需要C++实现,增加了一些C++开发的工作量

•不经过裁剪的CEF,安装包会过大

对于要实现透明窗口和集成大量的C++模块的应用,CEF是个不错的选择。

在这里插入图片描述

结论

在互联网时代,选择一个合适的客户端框架,对于一个产品快速的推向市场,有着至关重要的作用。NW.js、Electron、CEF等Web brower模式的开发框架,能够完美复用现有的Web开发框架和技术,极大的提高开发速度,实现产品的快速迭代、最终实现产品的成功。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

桌面客户端框架技术选型 的相关文章

随机推荐

  • 关于VS编译的程序内存分配只能用1.5~2G上限的优化方案

    关于VS编译的程序 内存分配只能用1 5 2G上限的优化方案 遇到的问题是这样的 xff1a 电脑内存32G xff0c VS2012编译的一个程序 xff0c 在程序运行过程中 xff0c 一旦程序的内存使用达到1 5G xff0c 就会
  • 对称矩阵及正定性

    对称阵是非常重要的矩阵 xff0c 对于实对称矩阵 xff0c 其特征值也为实数 xff0c 且特征向量是垂直的 注意这里的垂直是指 xff1a 如果特征值互不相同 xff0c 那么每个特征值对应的特征向量是在一条线上 xff0c 那些线之
  • C++变量前面加下划线的含义

    参考C 43 43 变量前面加下划线的含义 云 43 社区 腾讯云 C 43 43 变量前面加下划线和不加下划线都不会影响对变量的定义 xff0c 只是风格问题 xff0c 更喜欢将成员变量或者私有成员变量的前面加上下划线 以表示该变量是某
  • 对PX4参数THR_MDL_FAC的理解

    对参数THR MDL FAC的理解 home wp src PX Firmware src lib mixer module mixer module hpp 这里引入了参数THR MDL FAC的使用 DEFINE PARAMETERS
  • TX2安装ubuntu18,ROS

    设备 TX2 8G版本 ubuntu18 04笔记本一台 重要提示 请看完全文再安装 xff01 本文不是手把手教你安装类型教程 给TX2刷系统 看看我的参考博客1吧 最好参考最新的博客 xff0c 现在官网的新版本都不是这样 JetPac
  • px4的PWM是如何输出的

    如果有io芯片 xff0c 且使用了io作为输出PWM的设备 则fmu将mixer传输给io xff0c io进行混控计算并输出PWM xff0c 将pwm结果传递回fmu xff0c 此时无app订阅acuator outpus xff0
  • PX4的mix文件是怎么被使用的呢?

    启动 怎么到启动这里的就不说了 2 作为MIXER FILE被mixer load的 src systemcmds mixer mixer cpp实现mixer load Mixer load调用函数 xff1a load const ch
  • 诚迈科技发布OpenHarmony发行版鸿诚志远HongZOS

    2022年11月3日 xff0c 诚迈科技在东莞松山湖举办 鸿雁于飞 至诚志远 开源鸿蒙 诚迈科技HongZOS发布会 xff0c 发布基于OpenHarmony的商业发行版鸿诚志远 xff08 HongZOS xff09 xff0c 并推
  • PX4阅读开发小技巧

    1 基操 本文件搜索 全局搜索 后退 前进 ctrl 43 p xff0c 搜索文件名 右键 xff0c 书签功能 ctrl 43 单击 F12 xff0c 转到定义 大纲视图 vscode的Open Folder插件搜索文件夹名 2 利用
  • 一种基于接触性检查的全方位空中操作平台

    这里写自定义目录标题 摘要简介相关工作系统描述控制架构A 系统模型B 外部力估计C Interaction Control Selective Impedance 交互作用控制 xff1a 选择性阻抗D Surface Normal and
  • PX4的代码测试

    PX4的代码测试 写完代码总要测试一下吧 xff0c 自己先测试一下 xff0c 怎么用Test呢 xff1f 官方关于测试的概括说明 xff1a Platform Testing and Continuous Integration PX
  • CMAKE学习

    官方学习资料 系统的学习还是看官方资料为好 CMake Reference Documentation CMake 3 23 1 Documentation https cmake org cmake help latest Documen
  • QNAP威联通配置docker下的mysql外部网络访问问题

    QNAP的ContainerStation的mysql 容器默认配置是NAT网络是不行的 直接把mysql容器的网络设置改成host并重启 xff0c 就可以在外部连入了 注意需要设置容器的环境变量来配置root密码 需要配置下 MYSQL
  • Python数据可视化教程之基础篇

    点击上方 AI遇见机器学习 xff0c 选择 星标 公众号 重磅干货 xff0c 第一时间送达 开运张 作者 知乎专栏 来源 https zhuanlan zhihu com p 55642042 经过学习之后 xff0c 我总结了利用py
  • 终身学习楷模!吴恩达74岁父亲8年完成146门课

    点击上方 AI遇见机器学习 xff0c 选择 星标 公众号 重磅干货 xff0c 第一时间送达 学习真谛和乐趣在于保持敏锐的头脑 xff0c 以及发现美的能力 作者 贝爽 我们需要保持精神年轻 xff0c 保持好奇心 这是一位74岁老先生的
  • 通过CMakeLists.txt和shell脚本实现自动化编译

    这是项目的整个目录结构 span class hljs comment 此种方式配置犹如Vs中的配置一样 span span class hljs comment CMakeLists file span span class hljs k
  • MAC 安装JD-GUI

    今天升级MAC系统到最新版本 12 0 1 xff0c 然后突然发现JD GUI xff08 v 1 6 xff09 运行不了了 然后就删除重新下载新的 xff0c 发现还是不行 xff0c 在网上搜资料 xff0c 都说需要修改运行文件
  • mysql使用笔记

    创建数据库 create database database name 删除数据库 drop database database name 创建表 span class token comment 最简单的语法 span span clas
  • 华为携手去哪儿、九牧等企业,共论鸿蒙生态发展蓝图

    11月5日 xff0c 在华为开发者大会2022 xff08 Together xff09 上 xff0c 华为携手中软国际 九牧集团 深开鸿 开鸿智谷 去哪儿 鸿湖万联6家鸿蒙合作伙伴代表 xff0c 分享了基于OpenHarmony技术
  • 桌面客户端框架技术选型

    摘自 技术怪咖 欧阳森林 作为客户端的架构选型主要面临以下几个方面的需求 xff1a 1 开发速度快 xff0c 能够快速迭代 xff0c 快速试错 2 客户端能够跨平台 xff0c 同时适应Windows和Mac平台 3 用户界面友好 x