From the Desktop to the Mobile Cloud: Extending your Qt Widget Desktop Application as a Back-end Service Cameron Kiddle, Ph.D. Senior Product Manager Calgary Scientific Inc. [email protected] Kevin Ottens, Ph.D. Software Craftsman KDAB [email protected] 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 Develop a new web/mobile application • Pros: No source code modification, data secure on server, not limited by client hardware • Pros: Full flexibility to adapt interface to target platforms • Cons: No 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 C++ Application The PureWeb Advantage Collaboration / Conferencing Simultaneous interaction Social Expands deployment options Enables Software-as-a-Service Cloud Mobile Big Data High performance Process/visualize data where it is Data stays secure on remote server Minimize bandwidth/latency Leverage existing application Web and mobile enablement Real-time and interactive Flexible interface PureWeb in Use Today Medical Data Analytics Energy CAD 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 • To date 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, Ph.D. Kevin Ottens, Ph.D. Senior Product Manager Software Craftsman Calgary Scientific Inc. KDAB [email protected] [email protected] Try PureWeb Today! http://www.calgaryscientific.com/pureweb
© Copyright 2024