SlideShare a Scribd company logo
Using Web Software
Architecture in Traditional
Desktop App Development
How Flux/Redux was ported to Qt/Qml
Ben Lau
Open Source Developer
https://github.com/benlau
Ben Lau
Qt Champion 2016&2017
Cross-Platform
SDK
Windows / Mac / Linux Android / iOS
Internet of Things /
Embedded Devices
Gaming and 3D
Application
Linux Desktop - Gtk Vs Qt
VS
C
Python
C++/JavaScript
Python
1st Public Release
1995
Qt
v0.9.0 for X11/Linux
JavaScript
Netscape Navigator 2.0
beta
20th Apr 1995
4th Dec 1995
Mostly Inline Event Callback
2000
Server Side Rendering is the Main Stream
2000
Qt 3.0/Embedded, User Interface Designer
2001
~2000 Web and Desktop Development
are Completely Different
GWT: Compile Java -> JavaScript
2006
jQuery - Reinvent the JavaScript
2006
The Growth of JavaScript Frameworks
Past
Present
Future
License: GPL => LGPL
2008
QML:Declarative User Interface Markup Lang
2010
Callback in JavaScript
~2010 Web and Desktop Development
are Getting Closer
A Common Challenge
MVC: Model View Controller
A concept that you must learn to write GUI application
Model 2
MVC is not a Design Pattern
Different idea, various way of implementation models
The original MVC
Model 1 - The original proposal Model 2
Explicitly Declared Controller
Non-Explicitly Declared Controller
MVVM: Model - View - ViewModel
By Microsoft for use with Windows Presentation Foundation
2005
The Event Flow of MVC/MVVM
Like playing a Pong Game
Schrödinger's MVC’s Cat
In a Game with a Cat
Somebody calls “LegView.remove()”
A leg cannot remove itself. Emit removeRequest signal
BodyView.legRemoved(index) => CatView.meow()
Emit meowSignal()
1
3
CatView.meowSignal() => OwnerView.pet(cat)4
LegView.removeRequest() => BodyView.removeLeg(index)
Emit legRemoved(index)
2
ReactJS and Flux Architecture
A Simplified CQRS (Command Query Responsibility Segregation) Architecture
2013
Queries and Updates Separation
~ Model
Read-Only
Updates by
Action
Unidirectional Data Flow
Is it suitable for
Desktop Application?
1st Attempt: Clone the API of Facebook
Flux Project
2nd Attempt: Share My Experience
Problem: The official Flux
implementation is too simple.
Only solved few problems
Too Many Implementations
2016: Quick Flux v1.0 Released
Enquiry 1: Can I use React in Qt?
Enquiry 2: Can I use Redux in Qt?
Redux is a Modified Flux Architecture
1. Use Reducers to update
Store
2. Reducer is a pure function
3. A pure function always
returns the same output for
a set of inputs
4. A pure function could not
handle random value and
asynchronous I/O
5. Uses Middleware to handle
async I/O
2015 https://staltz.com/unidirectional-user-interface-architectures.html
QRedux - A Qt/QML port of Redux
2016
QuickFlux v1.1 Released
2017 Pure Component Async I/O
Finally, I got a almost perfection
software architecture for desktop
application
Only depends on Store (Data Model) and
Actions
No knowledge of application logic and
system components
Only send actions on user events
01
02
03
Fast Development04
Perfection Separation of View and Logic
Saved in Store. It is pure and
deterministic
Decoupled from System Components
It doesn’t need a Mock object for writing
tests.
01
02
03
Fast Development04
Application Logic
Enquiry 3: Can you help me to port my
application to use your QuickFlux?
Q & A
Thank you
Twitter @benlaud | Github @benlau

More Related Content

PDF
Cassovary
PDF
HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...
PDF
The new features of angular 12
PDF
How to deploy angular 12 application using firebase hosting
PPT
Eclipse summit-2010
PDF
IVY: an overview
PPTX
Hot deploy
ODP
Hot Reloading with React - Experiences
Cassovary
HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...
The new features of angular 12
How to deploy angular 12 application using firebase hosting
Eclipse summit-2010
IVY: an overview
Hot deploy
Hot Reloading with React - Experiences

What's hot (20)

PPTX
GitFlow Workshop
PDF
Microsoft xamarin-experience
PPTX
Redux with React Native
PDF
React, ES6, and Meteor
PDF
Keep GCC running: 2019 update (BlinkOn 10)
PDF
James Baxley - Statically typing your GraphQL app
PDF
Restlet Framework NG
PDF
Continuous load testing
PDF
Symfony2 Specification by examples
PPTX
Jump into React-Native (Class 6)
PDF
Gophercon 2018: Kubernetes api golang
ODP
Whats new in Eclipse Indigo ? (@DemoCamp Grenoble 2011)
PDF
Implementing GraphQL - Without a Backend
PDF
Eclipse IDE and Platform news on Fosdem 2020
PDF
APIdays 2015 - The State of Web API Languages
PPTX
Gitlab CI/CD
PDF
Annotation processing
PDF
5 Key Benefits of Migration
PPTX
From Streams to Reactive Streams
PPTX
Why reinvent the wheel at Criteo?
GitFlow Workshop
Microsoft xamarin-experience
Redux with React Native
React, ES6, and Meteor
Keep GCC running: 2019 update (BlinkOn 10)
James Baxley - Statically typing your GraphQL app
Restlet Framework NG
Continuous load testing
Symfony2 Specification by examples
Jump into React-Native (Class 6)
Gophercon 2018: Kubernetes api golang
Whats new in Eclipse Indigo ? (@DemoCamp Grenoble 2011)
Implementing GraphQL - Without a Backend
Eclipse IDE and Platform news on Fosdem 2020
APIdays 2015 - The State of Web API Languages
Gitlab CI/CD
Annotation processing
5 Key Benefits of Migration
From Streams to Reactive Streams
Why reinvent the wheel at Criteo?
Ad

Similar to Using Web Software Architecture in Traditional Desktop App Development (20)

PDF
Angular JS 2_0 BCS CTO_in_Res V3
PDF
"Write once, run everywhere", Oleksii Levzhynskyi
PDF
Angular (v2 and up) - Morning to understand - Linagora
PDF
Microsoft .NET 6 -What's All About The New Update
PPTX
The Javascript Ecosystem
PDF
IBM Rational Rhapsody and Qt Integration
PDF
Cutest technology of them all - Forum Nokia Qt Webinar December 2009
PPTX
The next step from Microsoft - Vnext (Srdjan Poznic)
PDF
Red Hat Forum Benelux 2015
PPTX
What's new in Visual Studio for Mac for .NET Developers
PDF
Add the power of the Web to your embedded devices with WPE WebKit
PDF
Igalia and WebKit: Status update and plans
PDF
Demystifying Docker
PPTX
Demystifying Docker101
PDF
Azure Day Rome 2019 Reloaded - Strangle(r pattern) your legacy application ru...
PDF
Red Hat and kubernetes: awesome stuff coming your way
PDF
Reactive Microservices with Spring 5: WebFlux
PDF
tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...
PDF
UniK - a unikernel compiler and runtime
PPTX
Comparison of Programming Platforms
Angular JS 2_0 BCS CTO_in_Res V3
"Write once, run everywhere", Oleksii Levzhynskyi
Angular (v2 and up) - Morning to understand - Linagora
Microsoft .NET 6 -What's All About The New Update
The Javascript Ecosystem
IBM Rational Rhapsody and Qt Integration
Cutest technology of them all - Forum Nokia Qt Webinar December 2009
The next step from Microsoft - Vnext (Srdjan Poznic)
Red Hat Forum Benelux 2015
What's new in Visual Studio for Mac for .NET Developers
Add the power of the Web to your embedded devices with WPE WebKit
Igalia and WebKit: Status update and plans
Demystifying Docker
Demystifying Docker101
Azure Day Rome 2019 Reloaded - Strangle(r pattern) your legacy application ru...
Red Hat and kubernetes: awesome stuff coming your way
Reactive Microservices with Spring 5: WebFlux
tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...
UniK - a unikernel compiler and runtime
Comparison of Programming Platforms
Ad

Recently uploaded (20)

PDF
System and Network Administration Chapter 2
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PDF
AI in Product Development-omnex systems
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
top salesforce developer skills in 2025.pdf
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PPT
Introduction Database Management System for Course Database
PDF
How Creative Agencies Leverage Project Management Software.pdf
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PDF
PTS Company Brochure 2025 (1).pdf.......
PPTX
L1 - Introduction to python Backend.pptx
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PPTX
ai tools demonstartion for schools and inter college
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
System and Network Administration Chapter 2
2025 Textile ERP Trends: SAP, Odoo & Oracle
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
AI in Product Development-omnex systems
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
top salesforce developer skills in 2025.pdf
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Introduction Database Management System for Course Database
How Creative Agencies Leverage Project Management Software.pdf
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PTS Company Brochure 2025 (1).pdf.......
L1 - Introduction to python Backend.pptx
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
ai tools demonstartion for schools and inter college
Navsoft: AI-Powered Business Solutions & Custom Software Development
Internet Downloader Manager (IDM) Crack 6.42 Build 41
VVF-Customer-Presentation2025-Ver1.9.pptx

Using Web Software Architecture in Traditional Desktop App Development