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. cameron.kiddle@calgaryscientific.com Kevin Ottens Software Craftsman KDAB kevin.ottens@kdab.com Volker Krause Senior Software Engineer KDAB volker.krause@kdab.com
Challenge?? 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
Common Approaches Remote Desktop? New Application? Other? 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 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
An Alternative Approach Extension as a Back-end Service 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 Leverage SDKs to stream select server side graphics and expose functionality to customizable clients on web/mobile devices
PureWeb Architecture Client PureWeb Client API Internet PureWeb Server PureWeb Service API Application C++
The PureWeb Advantage Collaboration / Conferencing Simultaneous interaction Social Expands deployment options Enables Software-as-a-Service Cloud Mobile Leverage existing application Web and mobile enablement Real-time and interactive Flexible interface Big Data High performance Process/visualize data where it is Data stays secure on remote server Minimize bandwidth/latency
PureWeb in Use Today Medical Energy CAD Data Analytics Big Science
PureWeb Enablement Process
Sample Code for Views Qt Scribble Service scribblearea.h scribblearea.cpp HTML5/JavaScript Client ScribbleClient.html ScribbleClient.js
Sample Code for Application State Qt Scribble Service scribblearea.cpp HTML5/JavaScript Client ScribbleClient.js
Sample Code for Commands Qt Scribble Service scribblearea.cpp HTML5/JavaScript Client ScribbleClient.js
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
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
Live Coding Example with PureWeb/Qt Bridge
Questions? Cameron Kiddle Senior Product Manager Calgary Scientific Inc. cameron.kiddle@calgaryscientific.com Kevin Ottens Software Craftsman KDAB kevin.ottens@kdab.com Volker Krause Senior Software Engineer KDAB volker.krause@kdab.com Try PureWeb Today! http://www.calgaryscientific.com/pureweb