Qt QML应用框架
1 介绍
1.1 QML开发人员少分析
Qt开发更多的是跨平台,嵌入式,整体来说,这方向人不多,在此基础上,用QML的着实少。Qt是一套框架,Qt开发本质也是C++开发。搞QML开发少,博主觉得一方面是C++开发看不上QML开发,一方面是怕搞QML开发弱化自己的C++能力。就如博主目前手头开发的项目,总代码量在5万行多,自己独立写的,C++部分比QML代码多,其中C++部分不与HMI直接交互的都是Unix C++,与HMI交互的才用Qt的C++类,界面使用QML。一方面是采用Flux架构把核心业务逻辑部分能分离出来,不依赖Qt,后续可单独维护。另一方面怕自己的Unix C++开发能力弱化。
1.2 QML带来前后端概念,与安卓web开发框架看齐
Qt开发初期,只有UI部分使用QWidget技术。该阶段,极少提出前后端、全栈概念。QML引入后,使得Qt开发有了前后端的概念。然后网上就有将Qt的C++逻辑开发称为后端开发,QML界面部分开发称为前端开发。
传统的前后端开发的框架,也就引入了Qt开发中。如Facebook的Flux架构、Twitter的Bootstrap框架。
- Flux工作流程图
- Bootstrap框架图
2 网上一些架构思路
2.1 多层架构
2.1.1 来源
A Multilayered Architecture for Qt Quick
2.1.2 多层架构的介绍
多层架构,各层职责明确,利于高内聚低耦合。
经典层如下:
- 表示层:可见的用户界面
- 服务层:进程间通信,前端/后端桥等。
- 业务逻辑层:领域知识,业务规则等
- 数据访问层:数据库,网络,文件等
2.1.3 多层架构调整为Qt APP架构
借鉴上述经典层,进行稍加修改。便可作为Qt app框架用:
该架构可轻松分离UI,便于UI切换(如切换为进程内Qt,远程进程Qt,远程HTML)。
2.2 Qt跨平台开发
程序原型简单,用户界面响应越快
文件挂载网关上,从网关上加载
2.3 withFlux
QML Application Architecture Guide with Flux
3 自己思考
归纳出相同重复的,然后设计。
参考
1、A Multilayered Architecture for Qt Quick
2、Qt qml的软件架构设计
3、Ben Lau–QML Application Architecture Guide with Flux
4、Ben Lau–Revised QML Application Architecture Guide with Flux
5、Ben Lau–Using Action-Dispatcher in QML
6、How to Avoid C++ Models in Qt and Why You Should Care
7、benlau/quickflux
8、Bootstrap框架图
9、架构进化论
10、架构设计的本质