互联网时代客户端软件的一些方案

纯Native开发, C++/C#/duilib+C++(Windows), Objective-c(Mac)
Qt(Windows/Mac)
NW.js/Electron(Windows/Mac)
CEF(Windows/Mac)
一个典型的方案是:用Rust来写业务逻辑,用Neon来做中间连接,用Electron来做UI层。分开做,UI层有UI的框架,业务逻辑有业务逻辑的框架,连接件也有相关框架。

一些案例

微信电脑版:duilib
VisualStudioCode:electron+typescript
网易云音乐:c++ + js+cef框架
有道词典:Hex,网易自家的引擎,类似于node-webkit,当初做这个的时候node-webkit还不是很完善,所以他们自己搞了一个(http://hex.youdao.com/zh-cn/about/index.html

一些“壳”的介绍

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(node-webkit)/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混合的应用非常方便。

Linux

一个是GTK+另一个是QT
GTK+

python https://python-gtk-3-tutorial.readthedocs.io/en/latest/install.html#

总结

尝试了duilib、qt、gtk、electorn,另外结合现阶段的趋势,个人感觉BS会越来越流行,所以,架构可以这样做:
一般以BS为主,涉及到本地硬件等操作可以考虑使用socket与服务器通信,浏览器发送请求,服务器再去与本机通信。

一些参考

https://www.zhihu.com/question/19903210
https://segmentfault.com/a/1190000016229749
https://github.com/fanfeilong/cefutil (cef中文文档)
https://bitbucket.org/chromiumembedded/cef/src/master/ (cef官网)
https://electronjs.org/ (electron官网)
https://www.jianshu.com/p/c6bdb087e60d (搭建一个electron应用)
http://xzper.com/2016/04/17/vscode%E6%BA%90%E7%A0%81%E5%89%96%E6%9E%90/ (vscode源码解析)
https://www.zhihu.com/question/43666493 (vscode的界面用的是什么技术)
http://www.ayqy.net/blog/vs-code源码简析/ (vscode源码解析)

C/S软件方案的更多相关文章

  1. Aoac唤醒的软件方案

    Aoac唤醒 这篇文章包含了Win10下的Aoac唤醒和Win11下的Aoac唤醒的不同地方,在结尾处: 从Win10时代开始,通过软件来唤醒机器是一个很常见的事情了,但是很少有文档去将如何通过AOA ...

  2. 10个最好的免费PS图象处理软件方案

    说到照片和图像编辑/操纵,真的没有更好的应用,Adobe PS图象处理软件. 摄影师和创意工作室会同意这是总理的照片编辑应用期. 不幸的是,PS图象处理软件还配备了一个陡峭的学习曲线和价格标签,我们必 ...

  3. atitit.短信 验证码  破解  v3 p34  识别 绕过 系统方案规划----业务相关方案 手机验证码  .doc

    atitit.短信 验证码  破解  v3 p34  识别 绕过 系统方案规划----业务相关方案 手机验证码  .doc 1. 手机短信验证码 vs 图片验证码 安全性(破解成本)确实要高一些1 1 ...

  4. 分布式数据存储 - MySQL主从复制高可用方案

    前面几篇文章说道MySQL数据库的高可用方案主从复制.主从复制的延迟产生原因.延迟检测及延迟解决方案(并未从根本上解决),这种主从复制方案保证数据的冗余的同时可以做读写分离来分担系统压力但是并非是高可 ...

  5. Mycat节点扩缩容及高可用集群方案

    数据迁移与扩容实践: 工具目前从 mycat1.6,准备工作:1.mycat 所在环境安装 mysql 客户端程序. 2.mycat 的 lib 目录下添加 mysql 的 jdbc 驱动包. 3.对 ...

  6. (5.1)mysql高可用系列——高可用架构方案概述

    关键词:mysql高可用概述,mysql高可用架构 常用高可用方案 20190918 现在业内常用的MySQL高可用方案有哪些?目前来说,用的比较多的开源方案分内置高可用与外部实现,内置高可用有如下: ...

  7. SDN跟网络虚拟化的完美结合

    SDN跟网络虚拟化的完美结合 之前说过,所谓的“SDN最适合的领域是数据中心”的说法,笔者认为更准确的说法应该是SDN最适合的领域是数据中心中的网络虚拟化应用.为什么说SDN 非常适合用在网络虚拟化中 ...

  8. KVM虚拟机网络基础及优化说明

    一个完整的数据包从虚拟机到物理机的路径是: 虚拟机--QEMU虚拟网卡--虚拟化层--内核网桥--物理网卡 KVM的网络优化方案,总的来说,就是让虚拟机访问物理网卡的层数更少,直至对物理网卡的单独占领 ...

  9. PDA移动POS开单扫描打票收银系统-带来零售批发 新的技术 新的手段!!

    手持POS终端高清彩屏,清晰.美观.大方,适用于仓库.超市.服装.食品.批发零售.手机电脑等企业管理.可与管理软件灵活对接.1:员工记不住价格,产品名称,只要有PDA扫描,价格,库存,直接开销售单,打 ...

随机推荐

  1. 年视图,选择月份 ---bootstrap datepicker

    $.fn.datepicker.dates['cn'] = { //切换为中文显示 days: ["周日", "周一", "周二", &qu ...

  2. MySQL-UDF和MOF提权

    MOF提权 MOF文件是mysql数据库的扩展文件(在c:/windows/system32/wbem/mof/nullevt.mof) 叫做”托管对象格式”,其作用是每隔五秒就会去监控进程创建和死亡 ...

  3. TensorFlow错误ValueError: No gradients provided for any variable

    使用TensorFlow训练神经网络的时候,出现以下报错信息: Traceback (most recent call last):   File "gan.py", line 1 ...

  4. pip下载提速

    方法一使用国内镜像: 清华:https://pypi.tuna.tsinghua.edu.cn/simple/ 阿里云 http://mirrors.aliyun.com/pypi/simple/ 中 ...

  5. LC 820. Short Encoding of Words

    Given a list of words, we may encode it by writing a reference string S and a list of indexes A. For ...

  6. ViedoUtil获取视频的缩略图

    package com.jcf.utilsdemo; import android.graphics.Bitmap; import android.media.ThumbnailUtils; publ ...

  7. java 注解方式 写入数据到Excel文件中

    之前有写过一点关于java实现写Excel文件的方法,但是现在看来,那种方式用起来不是太舒服,还很麻烦.所以最近又参考其他,就写了一个新版,用起来不要太爽. 代码不需要解释,惯例直接贴下来: publ ...

  8. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_6-3.微信网站扫码支付介绍

    笔记 3.微信网站扫码支付介绍     简介:讲解微信网页扫码支付         1.扫码支付文档:https://pay.weixin.qq.com/wiki/doc/api/native.php ...

  9. Jmeter: PATCH方法无法发送参数的暂时解决方法

    Jmeter: PATCH方法无法发送参数的暂时解决方法 最近在做API测试,前面的GET这些HTTP Request方法都无压力,顺利解决. 但碰到PATCH方法时,发现无法通过. 通过对比,发现P ...

  10. spring-boot集成6:集成redis实现字典缓存功能

    Why redis? redis是基于内存的key-value系统,可以用作缓存中间件或者消息中间件,spring-boot提供了方便的方式和redis集成. 1.maven依赖 <!--red ...