qtdd14 - qt bridge to pureweb

16
From the Desktop to the Mobile Cloud: Extending your Qt Widget Desktop Application as a Back-end Service Cameron Kiddle Senior Product Manager Calgary Scientific Inc. [email protected] Kevin Ottens Software Craftsman KDAB [email protected] Volker Krause Senior Software Engineer KDAB [email protected]

Upload: epics-qt-collaboration

Post on 02-Jul-2015

138 views

Category:

Engineering


5 download

TRANSCRIPT

Page 1: QtDD14 - Qt bridge to pureweb

From the Desktop to the Mobile Cloud: Extending your

Qt Widget Desktop Application as a Back-end Service

Cameron Kiddle Senior Product Manager Calgary Scientific Inc. [email protected]

Kevin Ottens Software Craftsman KDAB [email protected]

Volker Krause Senior Software Engineer KDAB [email protected]

Page 2: QtDD14 - Qt bridge to pureweb

??

YOU HAVE

• A Qt Widget desktop application with:

• Big or sensitive data

• High performance processing or

rendering

• Specific hardware requirements

YOU WANT

• Anytime, anywhere access from any

device

• Real-time interactive performance

• Data security

• Flexible interface

• Collaboration

Challenge

Page 3: QtDD14 - Qt bridge to pureweb

Remote Desktop ?

New Application ?

Other?

Develop a new web/mobile application

• Pros: Full flexibility to adapt interface to target

platforms

• Cons: Unable to leverage time/money spent on

existing application, client hardware limitations,

data transmission/security issues

Common Approaches

Remote Desktop / VDI

• Pros: No source code modification, data secure

on server, not limited by client hardware

• Cons: No flexibility to adapt interface to target

platforms

Page 4: QtDD14 - Qt bridge to pureweb

Extend your application as a back-end service

• Pros: Leverage existing code, data secure on server, not

limited by client hardware, flexibility to adapt interface to

target platforms

• Cons: Source code modification / development required

Extension as a

Back-end Service

Leverage SDKs to stream select

server side graphics and expose

functionality to customizable clients

on web/mobile devices

An Alternative Approach

Page 5: QtDD14 - Qt bridge to pureweb
Page 6: QtDD14 - Qt bridge to pureweb

Client

PureWeb Client API

PureWeb Server

Application

PureWeb Service API

Internet

PureWeb Architecture

C++

Page 7: QtDD14 - Qt bridge to pureweb

The PureWeb Advantage

High performance

Process/visualize data where it is

Data stays secure on remote server

Minimize bandwidth/latency

Expands deployment options

Enables Software-as-a-Service

Leverage existing application

Web and mobile enablement

Real-time and interactive

Flexible interface

Collaboration / Conferencing

Simultaneous interaction

Mobile Cloud

Social

Big Data

Page 8: QtDD14 - Qt bridge to pureweb

PureWeb in Use Today

Medical

Big Science

Energy

Data Analytics

CAD

Page 9: QtDD14 - Qt bridge to pureweb

PureWeb Enablement Process

Page 10: QtDD14 - Qt bridge to pureweb

Sample Code for Views

Qt Scribble Service

HTML5/JavaScript Client ScribbleClient.html

ScribbleClient.js

scribblearea.cpp

scribblearea.h

Page 11: QtDD14 - Qt bridge to pureweb

Sample Code for Application State Qt Scribble Service

HTML5/JavaScript Client ScribbleClient.js

scribblearea.cpp

Page 12: QtDD14 - Qt bridge to pureweb

Sample Code for Commands Qt Scribble Service

HTML5/JavaScript Client ScribbleClient.js

scribblearea.cpp

Page 13: QtDD14 - Qt bridge to pureweb

PureWeb/Qt Bridge

• An investigation by KDAB to simplify the integration of PureWeb with Qt applications

• The following has been considered for the PureWeb/Qt Bridge • Exposing a QWidget as a PureWeb view

• Exposing QObject methods as PureWeb commands

• Exposing QObject properties as PureWeb application state

• A prototype PureWeb/Qt Bridge has been created

Page 14: QtDD14 - Qt bridge to pureweb

PureWeb/Qt Bridge Prototype

class RenderViewProxy ( const QString &viewname, QWidget *widget )

• creates a proxy to export widget as a PureWeb view

• captures rendering of widget and copies this into the PureWeb imaging pipeline

• sets size of view to client size

• handles mapping of mouse/keyboard input

void ObjectRegistrar::registerObject ( const QString &path, QObject *object )

• object properties become part of PureWeb application state

object.property_a -> path.property_a

• object slots and invokable methods become PureWeb commands

object.slot_b -> path.slot_b

Page 15: QtDD14 - Qt bridge to pureweb

Live Coding Example

with PureWeb/Qt Bridge

Page 16: QtDD14 - Qt bridge to pureweb

Questions?

Cameron Kiddle

Senior Product Manager

Calgary Scientific Inc.

[email protected]

Kevin Ottens

Software Craftsman

KDAB

[email protected]

Try PureWeb Today!

http://www.calgaryscientific.com/pureweb

Volker Krause Senior Software Engineer

KDAB

[email protected]