在这个“大数据”的时代,传统的跨平台C++库Qt已经将魔爪丧心病狂的伸向了“云计算”。在2012年的Qt开发者大会上,Qt发布了BaaS(Backend as a Service)服务——Enginio,旨在为用户提供一个NoSQL数据库的后端平台。截至到(2014年9月),Qt云服务(Qt Cloud Services,简称“QTC”)已经发展成为了提供以下三种服务的云平台:

鉴于这三种应用都有Qt SDK(Qt5.3以上)的支持,又由于Qt跨平台的特性(支持Mac, Win, Win8, Linux, Android, IOS, WP等平台),使得我们开发云应用变得更加简单。用户想要更大的带宽或存储空间、更多的读写次数,只要给钱,QTC就能无缝扩展。

“1GB的免费空间,2万5千次读写次数”可以看出,在价格方面Qt对免费用户还是挺厚道的。具体的价格政策详见QTC官网信息

QTC非常详细的文档源于Qt优良的传统。想要详细学习QTC的各种技术,可以直接访问官方文档。然而,QTC还处于起步阶段,只有设在欧洲的服务器,致使国内访问网速较慢,甚至存在被墙的风险。并且不排除今后QTC在国内设服务器,或者直接被墙的可能,所以不排除以后QTC在国内架设服务器的可能。

本次QTC入门系列,我打算MAR/EDS/MWS都至少写一篇介绍。由于我没有学过计算机网络,也不对网络编程了解也不多,因次文章中如有错误或漏洞,烦请指出。

由于QTC文档里面写着:

This is a Beta release of the Managed Application Runtime. As a result, the API is subject to change. Developers should take this into consideration when using this release.

This is a Beta release of the Managed WebSocket. As a result, the API is subject to change. Developers should take this into consideration when using the Beta release of the Managed WebSocket.

所以本系列文章里面所提到的具体的API有可能会失效,请大家谅解。

下面就简要介绍这三种应用:


1. Managed Application Runtime (MAR)

MAR从字面可以看出,是一个托管的应用运行时,可以将源代码通过Git的方式上传到QTC的服务器中,在线部署编译,属于PaaS(Platform-as-a-Service)。从官方给出的examples可以看出,MAR支持以下服务器端的语言:

也就是说,我们可以很方便的把本地编写的程序,稍微改造一下,部署到服务器端。MAR因为用到了Git,所以要求用户会使用Git的基本操作。

PS:从QTC的价格信息来看,免费用户只能创建“单核256M内存”的虚拟机,但是我现在能够创建“4核1024M内存”的机器。

2. Enginio Data Storage (EDS)

EDS就是之前所说的Qt提供的最早的云服务——Enginio。它提供了一个NoSQL数据库(NoSQL这几年很火呀),用来存储非关系型数据(non-relational data)。EDS可以通过REST APIs来访问,也可以通过Qt的Enginio SDK(C++/QML)来访问,当然也支持直接在网页上管理数据库。

在EDS平台中,我们可以管理数据,也能管理数据的权限、进行账户认证(Authentication)、存储文件、进行全文搜索等。

在Qt5.3的SDK中,就包含了Enginio模块。并且官方也给出了三个C++示例:Cloud Address Book、Image Gallery和Todos;同时也给了4个基于QML的例子:Image Gallery、Social Todos、Todos、Users。每个例子都能在Qt的SDK或者文档中找到。Enginio的SDK,不仅提供了EnginioClient类,用来处理数据的传送,还封装了EnginioModel类,利用Qt的Model/View模型来简化云端与本地的数据交互。

3. Managed WebSocket (MWS)

由于我不熟悉WebSocket,只好借助Wiki了:

WebSocket是HTML5开始提供的一种浏览器与服务器间进行全双工通讯的网络技术。 WebSocket通信协议于2011年被IETF定为标准 RFC 6455,WebSocketAPI被W3C定为标准。

在WebSocket API中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。

WebSocket被称为“Web的TCP”,通过WebSocket可以简化实时Web应用的开发。具体应用可以参照IBM的这篇文章:《使用 HTML5 WebSocket 构建实时 Web 应用》

MWS就是托管在QTC上的WebSocket,MWS客户端和服务器端的SDK已经包含在Qt5.3里面了,同时社区提供的Android/Node.js/Ruby的SDK也挂在了官方文档里。官网官方示例是一个聊天室程序。


#首次使用QTC要注意的事情
由于“云计算”涉及到众多技术,因次在QTC上部署运行应用之前,要注意以下事项:

    • 申请一个Qt/QTC的账号(可以利用Github账号登陆)
    • 了解Git。至少得知道常用的Push/Pull/Commit/Branch操作。能够生成SSL密钥
    • 安装了Qt5.3以上版本,并且熟悉Qt的SDK(C++或QML),了解“网络”的基本概念。不熟悉的话,就要闷声学习一个
    • 要经常看Qt和QTC的文档,并且要看得懂(4级水平)
    • 要有探索未知的欲望……
    • 要经常看看我博客的更新……

http://www.chenguanzhou.com/2014/09/26/2014-09-26-QTC-Introduction/

Qt云服务/云计算平台QTC(Qt Cloud Services)入门(0)的更多相关文章

  1. 【Azure 云服务】如何从Azure Cloud Service中获取项目的部署文件

    问题描述 在历史已经部署的云服务(Azure Cloud Service)中,如何获取到项目在很久以前的部署包文件呢? 解决办法 1)如果部署云服务是通过门户上传部署包到存储账号中,则可以直接从存储账 ...

  2. 我用STM32MP1做了个疫情监控平台2—Qt环境搭建

    目录 1.嵌入式Qt简介 2.查看开发板Qt库的版本 3.主机搭建Qt环境 4.第一个Qt程序--Hello World 5.一些问题 @ 1.嵌入式Qt简介 Qt 是一个跨平台的应用程序开发框架.使 ...

  3. 【Azure 云服务】在Cloud Service的代码中如何修改IIS Application Pool的配置呢? 比如IdleTimeout, startMode, Recycling.PeriodicRestart.Time等

    什么是 PaaS?Platform as a Service 平台即服务 (PaaS) 是云中的完整开发和部署环境,你可以使用其中资源交付内容,从基于云的简单应用到启用云的复杂企业应用程序皆可.你以即 ...

  4. 【Azure 云服务】Azure Cloud Service 为 Web Role(IIS Host)增加自定义字段 (把HTTP Request Header中的User-Agent字段增加到IIS输出日志中)

    问题描述 把Web Role服务发布到Azure Cloud Service后,需要在IIS的输出日志中,把每一个请求的HTTP Request Header中的User-Agent内容也输出到日志中 ...

  5. 云计算平台简介(App Engine)

    云计算平台简介(App Engine)     1   简介 App Engine: 应用程序引擎,是托管网络应用程序的云计算平台. 1.1  什么是云 云计算通常简称为“云”,是一种通过 Inter ...

  6. [转]在 Azure 云服务上设计大规模服务的最佳实践

    本文转自:http://technet.microsoft.com/zh-cn/magazine/jj717232.aspx 英文版:http://msdn.microsoft.com/library ...

  7. 开源流数据公司 StreamNative 推出 Pulsar 云服务,推进企业“流优先”进程

    Apache 顶级项目 Pulsar 背后的开源流数据公司 StreamNative 宣布,推出基于 Apache Pulsar 的云端服务产品--StreamNative Cloud.该产品的发布, ...

  8. Windows Azure中WebSite 网站, Cloud Service 云服务,Virtual Machine 虚拟机的比较

    在Windows Azure服务平台里,Web Site特点是: 在Windows Azure上构建高度可扩展的Web站点. 快速.轻松部署一个高度可扩展的云环境,并且可以从很小的规模开始. 使用您所 ...

  9. 云计算 云服务 hadoop

    云:是一种虚拟化的技术,重在资源管理. 云服务是云计算的一种商业模式,有三个层次: Iaas:场外服务器,存储和网络硬件:节省了维护成本和办公场地,公司可以在任何时候利用这些硬件来运行其应用 Paas ...

随机推荐

  1. Java堆/栈/常量池以及String的详细详解(转)------经典易懂系统

    一:在JAVA中,有六个不同的地方可以存储数据: 1. 寄存器(register). 这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部.但是寄存器的数量极其有限,所以寄存器由编译器根据 ...

  2. 【23.33%】【hdu 5945】Fxx and game

    Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total Submission(s ...

  3. SVM明确的解释1__ 线性可分问题

    笔者:liangdas 出处:简单点儿,通俗点儿,机器学习    http://blog.csdn.net/liangdas/article/details/44251469 引言: 1995年Cor ...

  4. C#性能优化:延迟初始化Lazy

    1. 概述 我们创建某一个对象需要很大的消耗,而这个对象在运行过程中又不一定用到,为了避免每次运行都创建该对象,这时候延迟初始化(也叫延迟实例化)就出场了. 延迟初始化出现于.NET 4.0,主要用于 ...

  5. java写文件时往末尾追加文件(而不是覆盖原文件),的两种方法总结

    代码如下: import java.io.FileWriter; import java.io.IOException; import java.io.RandomAccessFile; public ...

  6. 华为如何实现基于Git的跨地域协同开发

    跨地域开发的需求其实由来已久,在IT/互联网发展的早期就已存在,只不过限于当时网络环境的因素,无法在线上有效的完成协同工作,所以没法实际开展.而随着近十年网络的快速发展,跨地域协同开发线变得可能而且越 ...

  7. myeclipse 8.6 software and workspace center is currently not available

    Myeclipse安装EGit插件的时候偏偏遇到software and workspace center is currently not available 不用打开myeclipse  conf ...

  8. WPF 判断调用方法堆栈

    原文:WPF 判断调用方法堆栈 版权声明:博客已迁移到 http://lindexi.gitee.io 欢迎访问.如果当前博客图片看不到,请到 http://lindexi.gitee.io 访问博客 ...

  9. Extensible File System

    An extensible file system format for portable storage media is provided. The extensible file system ...

  10. 简单IO,将一段字符串存入一个记事本

    using System; using System.IO; using System.Text; namespace 字符串存入记事本 { class Program { static void M ...