`
jgsj
  • 浏览: 963898 次
文章分类
社区版块
存档分类
最新评论

使用Qt和Enginio开发云端程序

 
阅读更多
使用Qt和Enginio开发云端程序
Enginio是随着Qt2012年的Qt开发者大会上提出的。目的是让Qt开发者对接目前正在蓬勃发展的云技术。在经过半年的发展后,Enginio已经迎来了第一个Alpha版本(2013年7月5日)。预计Enginio将在Qt5.2的时候成为Qt的一部分。
在认识Enginio之前,我们先来了解一下几种不同的与技术解决方案:IaaS,即Infrastructure as a Service,基础架构即服务,通过互联网提供了数据中心、基础架构硬件和软件资源。IaaS可以提供服务器、操作系统、磁盘存储、数据库和/或信息资源。PaaS,即Platform as a Service,平台即服务,提供了基础架构,软件开发者可以在这个基础架构之上建设新的应用,或者扩展已有的应用,同时却不必购买开发、质量控制或生产服务器。SaaS,即Software as a Service,软件即服务,是最为成熟、最出名,也是得到最广泛应用的一种云计算。大家可以将它理解为一种软件分布模式,在这种模式下,应用软件安装在厂商或者服务供应商那里,用户可以通过某个网络来使用这些软件,通常使用的网络是互联网。而我们将要了解的Enginio,则是BaaS(Backend as a Service)。它的作用是提供一个数据库后台,通过它规定的API调用,就可以将应用程序的各种数据存储在后台上,实现即存即得。从这个角度来说,Enginio很像我们所说的网盘,只是它提供了Qt风格的API,给Qt开发者带来了很大的方便。
原创文章,反对未声明的引用。原博客地址:http://blog.csdn.net/jiangcaiyang123/article/details/9465757
目前Enginio的内部版本是0.5,可见它仍处于评估期,0.5相比0.4,有了很大的改变,首先是API接口全部重写了,在0.4版本上编译成功的应用到了0.5就要重新编码再编译。官方给的解释是要让0.5的API尽量像Qt其它库中那样的风格。此外为了代码的复用,它不再提供自己Object,转而用QJsonObject作为传输类型。Json是一种简单而且丰富的数据类型,它能够表达很多种格式的数据。此外0.5还有一些其它的更新。

我自己制作了一个小的例子程序(下载地址在这里),测试Enginio是否可用,事实证明Enginio是能够工作的。

下面就来介绍一下如何下载并使用Enginio。
1、登录https://engin.io/
2、如果没有注册的话,那么注册(Sign up)一个账号吧。如果你已经有了一个账号,那么可以直接点击登录(Sign in)。 3、在你的dashboard中创建一个Backend,这样你将得到一个后台ID和密钥,这些将在程序中起着重要的作用。同时将会跳转到Backend界面。
4、在Libraries这一栏中点击Qt/QML的Download,下载最新版的Qt库。
5、解压库到一个没有中文和空格的路径中。
6、在确保qmake和make/mingw32-make在路径中后,用cmd,在控制台下构建Enginio。方法是:
cd $${Enginio路径}
qmake
make install或者mingw32-make install
7、Enginio库安装完毕,以后就可以#include <Enginio>和在pro文件中使用QT += enginio了。

下面介绍一下如何使用Enginio(Qt)与后端通信。首先是接收数据,下面的代码介绍了如何将Enginio后台的数据接收到客户端:

    // 1、创建Enginio的客户端类并写出backendID和backendSecret
    m_pClient = new EnginioClient;
    
    m_pClient->setBackendId( g_BackendID );
    m_pClient->setBackendSecret( g_BackendSecret );

    // 2、从后台获取数据
    QJsonObject object;
    object["objectType"] = QStringLiteral( "objects.ColorCube_Comment" );
    m_pClient->query( object );
    connect( m_pClient, SIGNAL( finished( EnginioReply* ) ),
             this, SLOT( DownloadText( EnginioReply* ) ) );
            
void FeedbackDialog::DownloadText( EnginioReply* pReply )
{
    // 3、解析从后端获取的数据
    QJsonArray result = pReply->data( )["results"].toArray( );

    foreach ( const QJsonValue& value, result )
    {
        const QJsonObject& object = value.toObject( );
        const QString& time = object["updatedAt"].toString( );
        const QString& comment = object["Comment"].toString( );
        ui->textEdit->append( time + ": " + comment );
    }

    ……
}

发送数据的步骤就更简单了。

    // 1、创建Enginio的客户端类并写出backendID和backendSecret
    m_pClient = new EnginioClient;
    
    m_pClient->setBackendId( g_BackendID );
    m_pClient->setBackendSecret( g_BackendSecret );
    
    // 2、创建一个QJsonObject,填充它
    QJsonObject comment;
    comment.insert( "objectType", QString( "objects.ColorCube_Comment" ) );
    comment.insert( "Comment", ui->lineEdit->text( ) );

    // 3、发送它
    m_pClient->create( comment );

除了可以通过API获取数据外,还可以登录Enginio的后台去看数据是否已经添加,非常方便。当然示例代码只是将一个个文字发送到后台,通过Json,像图片之类的多媒体文件也可以上传和下载。

最后在qt-project.org论坛上,Enginio的开发团队希望在后续的版本中添加notification功能,也就是说可以通过一个客户端对后端的改动来通知所有客户端的更新,就像SVN协同工作一样,又像是聊的功能。如果真是这样,那么Enginio作为一款Qt开源库的作用就更大了,期待后续版本!

分享到:
评论

相关推荐

    QT5开发实例小程序,从零开始学会QT5开发

    QT5开发实例小程序,从零开始学会QT5开发 QT5开发实例小程序,从零开始学会QT5开发 QT5开发实例小程序,从零开始学会QT5开发 QT5开发实例小程序,从零开始学会QT5开发 QT5开发实例小程序,从零开始学会QT5开发 QT5...

    使用Qt开发界面程序控制GPIO

    它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(MetaObjectCompiler,moc))以及一些宏,易于扩展,允许组件编程。2008年,...

    Ubuntu 下使用QT开发的串口程序

    1. 使用QT开发的简易串口程序 2. 使用socat 虚拟串口,可在linux系统下测试。

    【Qt】Qt 开发桌面程序

    【Qt】Qt 开发桌面程序 ( Qt 版本 5.14.2 | 编辑 Qt 桌面按钮控件 | 修改按钮文本 | 为按钮添加点击事件 | 系统调用 | 去掉系统调用命令窗口 ) https://hanshuliang.blog.csdn.net/article/details/114955196 博客...

    Qt5.9C++开发指南 源码 资源.zip

    详细介绍了Qt C++开发应用程序的技术,包括Qt应用程序的基本架构、信号与槽工作机制、图形显示的Graphics/View架构、数据编辑和显示的Model/View架构、对话框和多窗口的设计与调用方法等,介绍了常用界面组件、文件...

    Qt 5.9 C++开发指南

    Qt是一套应用程序开发类库,但与MFC不同,Qt是跨平台的开发类库。Qt支持PC和服务器的平台,包括Windows、Linux、macOS等,还支持移动和嵌入式操作系统,如iOS、Embedded Linux、Android、WinRT等。跨平台意味着只需...

    java 使用qt 开发gui 界面的qtjambi 开发包(完整版)

    在使用java 进行qt 界面开发的时候,必不可少的qt jambi 开发包。 下载压缩包后 将其中的 jar导入项目的build path。 然后,在安装了qtjambi 插件的eclipse 中的 Qt Jambi Preference Page 的 Jambi Location 处...

    qt项目开发实例超详细版

    它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许真正地...

    QT5开发及实例配套[源代码].zip

    Qt是诺基亚公司的C++可视化开发平台,本书以Qt 5作为平台,每个章节在简单介绍开发环境的基础上,用一个小实例,介绍Qt 5应用程序开发各个方面,然后系统介绍Qt 5应用程序的开发技术,一般均通过实例介绍和讲解内容...

    Qt5程序开发指南(三合一)

    Qt5程序开发指南(三合一),高清电子书,带书签和插图,英文原版,PDF格式。 从GUI程序开发到Qt游戏开发,全面了解和掌握。

    使用QtWebApp编写Web服务器应用程序.rar_HTTP_QT_QT web服务器_qt web_webserver

    Explained in detail qt how to build a web server

    Qt跨平台的应用程序开发框架Qt跨平台的应用程序开发框架

    Qt是一种跨平台的应用程序开发框架,被广泛应用于软件开发领域。Qt提供了丰富的类库和工具,为开发者提供了一种高效、便捷的方式来创建各种类型的图形用户界面(GUI)应用程序。 Qt的特点之一是跨平台性能。开发者...

    Qt6C++开发指南王维波源程序

    Qt 6 C++开发指南源程序

    Qt5开发及实例(完整版)

    Qt5开发及实例(完整版).zip 配完整教程实例源码和课件包含: 1.Qt5开发及实例(完整版).pdf; 2.课程PPT课件可供学习使用;...5. 开发效率高:Qt5具有简洁的API设计和易于使用的工具,可以提高开发效率。

    QT项目开发实例

    Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器...

    02《Qt 6 C++开发指南》全书示例源码-qmake完整版 V1.1(与书内容对应).zip

    《Qt 6 C++开发指南》包含丰富的示例项目,并且提供了 4 个版本的示例程序 功能和目的:这是全书示例项目的完整源代码,使用 qmake 构建系统管理项目。《Qt 6 C++开发指 南》全书的内容就是针对这个版本的源代码进行...

    QT开发QT开发的调用打印机打印图片的程序

    QT开发的调用打印机打印图片的程序,代码比较简单,注释清晰,适合初学者学习使用。 【QT简介】 Qt是跨平台的开发库,主要是开发图形用户界面(Graphical User Interface,GUI)应用程序,当然也可以开发非图形的...

    linux下QT编写的连接wifi程序

    linux下QT编写的连接wifi程序,可以扫描连接WIFI,测试使用的是Ubuntu16.04,比较简单。

    QT开发的POS机程序

    采用QT开发的POS机程序,可以直接使用在CE/LINUX为系统的嵌入式系统中,本人已经移植到ARM上,可以放心使用。

Global site tag (gtag.js) - Google Analytics