CB/S架构-基于CEF3+MFC实现

时间:2024-03-23 08:20:09

、为何使用CB/S架构

  1. 本人做VC++开发已有多年,最大的感受就是MFC界面太丑、UI界面库调用繁琐(技术有效个人看法-因为界面库是基于DirectUI技术都不支持独立窗口句柄,用于事件接受/GDI绘图/等等非常不方便,比如:DULIB/SOUI/炫彩界面库)、需要美工(小公司成本有限)、客户端升级麻烦(需要兼容各个系统版本)。。。等等,算了不吐槽了!!
  2. 可能大家问了,为神马不使用C#等界面开发呢,主要是考虑到要兼容各个系统版本,需要安装.NET环境比较麻烦,如果用于自助终端等环境比较单一的项目还是不错的。
  3. 为了解决界面美观、更新方便、旧项目改造方便等问题,我决定使用CB/S架构来解决以上问题,我采用MFC+谷歌浏览器CEF3实现CB/S架构,因为目前公司客户端都是MFC框架,所以方便快速替换旧版本客户端。

 

三、CB/S架构实现

由于CEF3支持C++与JS互相调用,所以客户端只需要实现一个js调用c++的通用接口就行,参数可以通过json结构数据控制实现不同的功能和传递不同类型参数。

1、c++调用js非常简单,直接调用js函数就行

如:c++调用

CB/S架构-基于CEF3+MFC实现

如:js接受函数

CB/S架构-基于CEF3+MFC实现

2、JS调用c++,比较麻烦,可以参考(https://blog.csdn.net/foruok/article/details/50573612)

根据个人喜好,本人只实现一个CMDFunction接口,通过json参数控制实现不同的功能。

如:JS调用

CB/S架构-基于CEF3+MFC实现

如:C++接受并实现(V8引擎接受到CMDFunction函数的参数后,发生到主窗口处理json数据并实现对应功能即可)

CB/S架构-基于CEF3+MFC实现

最终结果如下:

CB/S架构-基于CEF3+MFC实现

二:介绍CB/S架构(参考:https://www.cnblogs.com/liulun/p/3433003.html,写的非常好

 

    1.何为CB/S的应用程序

 

    C/S结构的应用程序,是客户端/服务端形式的应用程序,这种应用程序要在客户电脑上安装一个程序,客户使用这个程序与服务端通信,完成一定的操作。

    B/S结构的应用程序,是浏览器/服务端形式的应用程序,这种应用程序不用在客户端部署任何东西,客户只需要通过浏览器与服务端通信,来完成一定的操作。

    两种类型的程序优缺点对比:

对比内容

C/S结构的应用程序

B/S结构的应用程序

部署

较困难

方便

升级

较困难

方便

对客户端的控制权限

数据实时性

较高

通信效率

较高

跨平台性

    由上可知,两种形式的应用程序各有利弊。架构师在做技术选型的时候,往往会根据项目需要,对比这两种技术形式的优缺点,做出正确的选择。

    然而,国内大多数企业应用程序,需要频繁、及时的更新升级、需要更高的客户端控制权限、需要更高的数据实时性和更高的通信效率,但却不在意部署上的问题。

    这时,架构师就考虑把C/S结构的应用程序和B/S结构的应用程序结合起来,让客户端嵌套一个浏览器以与服务器通信,完成一定的操作。这样的程序就是CB/S结构的应用程序。

    这样做的好处是一般的业务逻辑只要在服务端更新升级,即可体现在客户端。对于客户端系统权限、基于Socket的通信等浏览器核心无法完成的操作,可以由客户端来完成。客户端可以直接与服务端通信,也可以通过浏览器核心与服务端通信。

    下图为CB/S结构应用程序的基本示意图:

CB/S架构-基于CEF3+MFC实现

 

目前还有一种介于C/S和B/S结构的应用程序之间的应用程序:RIA富互联网应用程序,这种结构的应用程序一般都是基于浏览器插件来运行的,它有较高的客户端控制权限(比B/S程序高,但比C/S程序低),通信方式也有较多的选择(不只是基于HTTP协议),目前较常见的RIA技术有:Adobe的flex技术、微软的Silverlight技术、Oracle的WebStart技术。架构师在做技术选型的时候,也可以综合权衡采用这些技术。

 

本人QQ:1255033066

欢迎指导