本文链接:http://blog.qt.digia.com/cn/2013 ... nches-tech-preview/
为什么用Enginio?
纵观现有的云解决方案,我们发现仍有改进的空间。它们有时很难上手,并且需要某些基础设施或平台的专业知识,大多数情况下,它们没有Qt/C++应用程序接口。使用这些经验,在我们尝试过为各种各样的程序构建后端之后,我们决定创建一个解决方案,它使用基于Qt的直观接口把应用程序和后端云存储连接起来。使用Enginio,开发人员能够专注于创建他们的应用使之视觉愉悦和运行良好,让Enginio来管理后端功能、扩展、安全和性能。 我们的目标是基于Qt的一句箴言--“使开发者的生活更简单”,所以我们要做的是为开发者提供一个不复杂的、无压力的后端开发体验。所以我们开始创建一个易用并且为Qt应用开发增值的解决方案,与此同时,把不费力的开发特质传递到其它平台。我们希望能够确保这个Qt后端能够为所有人提供增值。 Enginio也将会在商业运作之下,同时提供给Qt的开源和企业用户。对使用商业许可进行开发的Qt企业用户,稍候会为他们提供一些附加的增值特性和功能。 Enginio技术预览版支持: - 网页版控制面板(配置和管理您的后端的用户界面)
- Schema-less数据存储(存储应用程序数据的地方)
- 安全模型(控制哪些用户访问什么数据的机制)
- 文件支持(在云端保存小的或者大的文件)
- 全文搜索(通过内容搜索存储的数据)
- Qt/QML客户端库(创建应用程序的简便方式)
怎样开始?
注册一个Enginio账户
设置您的新后端
开发您的应用 Qt库的最新发布版可以从Enginio控制面板找到。
共享库和QML扩展插件,像其它Qt项目一样,使用‘qmake && make && make install’构建和安装。
Qt实例I. 在Qt Creator中选择:文件(File) > 新建文件或工程……(New File or Project…)创建新的“Qt Gui Application”。 II. 在新工程的pro文件中添加: - QT += network
- win32:CONFIG(debug, debug|release): LIBS += -lenginioclientd
- else: LIBS += -lenginioclient
- III. 在MainWindow.cpp中:
- // Include Enginio headers
- #include
-
- // Instantiate Enginio Client
- // Copy your backend ID and secret from Enginio dashboard
- const QString backendId("YOUR_OWN_BACKEND_ID");
- const QString backendSecret("YOUR_OWN_BACKEND_SECRET");
- EnginioClient *client = new EnginioClient(backendId, backendSecret);
-
- // Create new object to backend
- EnginioJsonObject banana("objects.fruits");
- banana.insert("name", QStringLiteral("Banana"));
- banana.insert("price", 1.59);
- EnginioObjectOperation *createOp = new EnginioObjectOperation(client);
- createOp->create(banana);
- createOp->execute(); // Initiates asynchronous operation
-
- // Fetch objects from backend to list model
- EnginioObjectModel *objectModel = new EnginioObjectModel();
- EnginioQueryOperation *queryOp = new EnginioQueryOperation(client);
- queryOp->setObjectType("objects.fruits");
- queryOp->setModel(objectModel);
- queryOp->execute();
复制代码 QML实例I. 在Qt Creator中选择:文件(File) > 新建文件或工程……(New File or Project…)创建新的“Qt Quick 2 Application (Built-in Elements)” II. 在main.qml中: - import io.engin 1.0 as Enginio
-
- // Instantiate Enginio Client
- // Copy your backend ID and secret from Enginio dashboard
- Enginio.Client {
- id: client
- backendId: "YOUR_OWN_BACKEND_ID"
- backendSecret: "YOUR_OWN_BACKEND_SECRET"
- }
-
- Enginio.ObjectModel {
- id: objectModel
- }
-
- Enginio.QueryOperation {
- id: queryOp
- client: client
- model: objectModel // Query results are added to model
- objectTypes: ["objects.fruits"] // Get all fruit objects
- }
-
- Component.onCompleted: {
- // Create new object to backend
- var banana = {
- objectType: "objects.fruits",
- name: "Banana",
- price: 1.59
- };
- var createOp = client.createObjectOperation();
- createOp.create(banana);
- createOp.execute();
- createOp.finished.connect(function() {
- // Fetch objects from backend to list model
- queryOp.execute();
- });
- }
复制代码构建和您的互联程序就完成了。 我们想邀请更多的朋友来测试和提供反馈。然而请牢记这项服务仍在开发中并且您可能遇到一些漏洞、变更和崩溃。请到http://engin.io看一下吧。把您的想法告诉我们。
|