C/S软件方案

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

纯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源码剖析/ (vscode源码解析)
https://www.zhihu.com/question/43666493 (vscode的界面用的是什么技术)
http://www.ayqy.net/blog/vs-code源码简析/ (vscode源码解析)

posted @ 2019-05-08 14:52  feipeng8848  阅读(880)  评论(0编辑  收藏  举报