互联网时代桌面客户端框架技术选型

导读:在互联网时代,如何将一个好的idea快速的转化为产品,如何在原有产品中增加新的特性,是产品能够快速的推向市场、快速占领的关键。因此,作为客户端的架构选型,面临哪几方面的需求?资深前端工程师欧阳森林针对其专业领域的经验,有着自己独到的见解。

  前言

  自从互联网江湖上出现了一部叫做“云”的秘籍,大大小小的门派,纷纷对外宣称自己掌握了“云”的核心,各种“云”应用层出不穷,Service的各种架构在一次次的华山论剑上大放异彩,仿佛你要是不知道最新的SaaS架构,不知道微服务,那你就落后了时代。可惜,好的服务不过是内功心法,如果你的招式太过单一,用户体验不好,就只能表演一下胸口碎大石、银枪刺咽喉的工夫,行家当然明白你内功深厚一代宗师,可打赏的终究是看热闹的路人甲乙丙丁,用户感官上的体验直接决定了究竟是少林真传大师,还是行走江湖卖艺先生。

  桌面客户端仍然是最重要的、复杂度最高的产品。变化纷繁,招式华丽才是广大路人们心中高手的形象,当然也只有程序的UI交互做的好,客户也才愿意买单。

  在互联网时代,如何将一个好的idea快速的转化为产品,如何在原有产品中增加新的特性,是产品能够快速的推向市场、快速占领的关键。因此,作为客户端的架构选型,也就面临以下几个方面的需求:

  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)

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

  Native开发

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

  优点:

  l 客户端性能比较好

  2 安装包比较小

  3 Windows比较容易兼容XP

  缺点:

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

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

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

  Qt

 

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

  l 优点:

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

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

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

  缺点:

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

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

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

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

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

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

  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更适合作为客户端的框架。

  优点:

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

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

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

  4 框架开源,升级比较快

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

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

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

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

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

  CEF

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

  优点:

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

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

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

  4 底层与C++集成容易

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

  缺点:

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

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

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

  结论

 

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

  参考

  我们在2015年初做全时蜜蜂客户端的架构选型时,曾考虑过NW、Elec和tronCEF三个框架,最终由于蜜蜂客户端要兼容XP、实现透明窗体和集成比较多的C++模块而选择了CEF。事实证明,使用CEF,我们做到了每周发一个小版本、每个月发一个大版本的快速迭代,不间断且快速给客户提供了好用的新功能。而且据笔者观察,钉钉也在最近舍弃了NW换成了CEF作为桌面客户端开发框架。

NW.js:

https://nwjs.org.cn/

https://liuxp.me/nwjs/

Electron:

https://www.w3cschool.cn/electronmanual/

转载:https://www.chinaz.com/news/2018/0903/932955.shtml
来源:站长之家

### 回答1: 远程桌面应用程序的技术选型有很多种方案。 常见的技术包括: - VNC (Virtual Network Computing) - RDP (Remote Desktop Protocol) - SSH (Secure Shell) - TeamViewer 这些技术都可以用来在远程计算机上控制图形界面。 其中 VNC、RDP 和 SSH 都是开源的,可以自己搭建服务器端。 TeamViewer 是一个商业软件,但是提供免费版本供个人使用。 在选择技术时,你需要考虑自己的需求,比如是否需要支持 Windows、Linux、Mac 等多种操作系统,是否需要支持高分辨率和高带宽等。 你也可以根据需要调整协议的安全级别,比如 VNC 和 RDP 的默认协议都是明文传输,你可以使用加密通道来提高安全性。 ### 回答2: 当然可以帮您进行远程桌面应用程序的技术选型。在选择技术时,我会考虑以下几个因素: 1. 客户端平台:远程桌面应用程序需要在不同的操作系统上运行,如Windows,macOS,Linux等。因此,您需要选择一个跨平台的开发框架,以便在各种操作系统上实现一致的用户体验。 2. 网络传输协议:远程桌面应用程序的核心功能是实现屏幕、鼠标和键盘事件的传输。选择一个高效且安全的传输协议对于应用程序的性能和可靠性至关重要。您可以考虑使用基于TCP的协议,如RDP(远程桌面协议)或VNC(虚拟网络计算机),也可以选择基于Web的技术,如WebRTC。 3. 用户界面和交互:远程桌面应用程序的用户界面需要易于使用,并提供常见的桌面操作功能。您可以选择使用桌面应用程序的图形界面工具包,如Electron或Qt,或者使用Web技术创建响应式的用户界面。 4. 安全性:远程桌面应用程序需要确保传输的数据和用户隐私的安全。因此,您需要选择一个具有端到端加密功能的传输协议,并采取适当的安全措施来保护应用程序免受恶意攻击。 5. 性能和延迟:远程桌面应用程序需要实时传输屏幕和用户交互,因此对于网络延迟和带宽的要求较高。选择一个具有高性能的传输协议和数据压缩功能的技术可以提高应用程序的响应速度和用户体验。 综上所述,为了选择最适合您需求的技术,我建议您详细评估以上因素,并根据您的项目要求和限制来选择最适合的技术方案。 ### 回答3: 当然可以帮您选择远程桌面应用程序的技术。 远程桌面应用程序是一种允许用户远程访问和控制计算机桌面的应用程序。在选择适合的技术时,我们需要考虑多个因素: 1. 客户端平台:您希望该应用程序能在哪些平台上运行?例如,Windows、Mac 或者移动设备(iOS/Android)等。 2. 带宽和延迟:您希望应用程序在何种网络环境下运行?如果带宽有限或网络延迟高,那么选择适当的压缩和传输协议非常重要。 3. 安全性:远程桌面应用程序通常需要处理敏感或机密的信息,因此数据传输和身份验证必须是安全的。确保选择支持加密和认证的技术。 4. 性能:客户端和服务器端的硬件要求需要考虑。如果服务器端的处理能力有限,那么选择一种轻量级的协议可能更加适合。 基于以上因素,以下列出几种常用的远程桌面技术供您参考: 1. VNC (Virtual Network Computing):VNC 是一种开源的远程桌面协议,支持跨平台和多种操作系统。它能在低带宽和高延迟的网络环境下工作,也支持加密和身份验证。 2. RDP (Remote Desktop Protocol):RDP 是由 Microsoft 开发的远程桌面协议,主要用于Windows操作系统。RDP 提供了较好的视频和图形性能,并支持远程应用程序的共享。 3. TeamViewer:TeamViewer 是一种商业远程桌面应用程序,适用于不同平台和操作系统。它通过云端服务器建立连接,支持高级安全功能,并提供简单易用的用户界面。 除了上述技术,还有其他的远程桌面解决方案,例如Citrix XenApp、Microsoft Azure RemoteApp等,具体选择还需根据您的需求和预算做出决策。 总体而言,根据您的需要和条件,我们可以帮您选择适合的远程桌面应用程序技术,并为您提供相应的技术支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值