SlideShare a Scribd company logo
MOBILE APP DEVELOPMENT
ARCHITECTURE & DESIGN PATTERNS
Powered by
Powered by
EXPERIENCE
ABOUT ME
Karol Szmaj
karol.szmaj@whallalabs.com
VP, CTO
+48 725 787 006
Powered by
Agenda
Out of the box approach
MVVM
Inversion of Control
Command and Query Responsibility Segregation
Tools & Tips
1
2
3
4
5
6 Questions
Powered by
DESIGN PATTERNS ARE SET OF
GUIDELINES NOT RULES
Powered by
Can be overkill for very simple application
Requires more time to bootstrap app
architecture
Disadventages
Powered by
Design Pattern Overview
Simplify maintenance
Separation of concerns
Minimize logic needed in UI
Enable testability
Reduce development time
Easy to customize apps
Adventages
OUT OF THE BOX APPROACH
CODE BEHIND
1
Powered by
Fast app prototyping
No time required for bootstraping application
Simple design: action + handler
Easy access to visual tree
Pros
Powered by
Out of the box approach
Code Behind
Large view classes
Breaks Single Responsibility Pattern
Hard to mantain in future
Poor code readability
UI customization can break logic inside view
Cons
Powered by
Out of the box approach
Code Behind
Lublin Startup Festival - Mobile Architecture Design Patterns
Creating small MVP of your product if there is an opportunity to refactor
Testing features
Small apps
When you should use it?
Powered by
When you shouldn’t use it?
Creating MVP without time to refactor
Enterprise apps
For apps with long-term support
Out of the box approach
Code Behind
MVVM – MODEL VIEW VIEWMODEL
2
Powered by
MVVM
Model-View-ViewModel
Powered by
Notifications
Data Binding
Commands
View ViewModel Model
UI Logic
Code Behind
Presentation
Logic
Bussiness Logic
And Data
Creating long term-support apps
When considering unit testing
When we need better code mantainability
When you should use it?
MVVM
approach
Powered by
When you shouldn’t use it?
For app testing purpose
When we don’t need testable bussines logic
When project is very simple (avoid architecture overengineering)
Lightweight
Developer controls everything
Implements: Command Patern, ViewModelBase, Messenger
Has IoC Container
MVVMLight
MVVM
frameworks
Powered by
WinRT focused
Support C#, C++/CX and HTML/JS
Validation, Conventions, Attached Events, Messenger, Logging
Very modular
Has IoC – Grace Container
StyleMVVM
MVVM
frameworks
Powered by
More complex, harder bootstrap
Better support for View Composition
Event aggregator
Conventions, Coroutines
Stable!
CaliburnMicro
MVVM
frameworks
Powered by
IOC – INVERSION OF CONTROL
3
Powered by
It’s not a library, framework or tool
It’s like a way of thinking, designing code and general guidelines
Dependency Injection is a set of practices that allow to build loosely coupled
applications
DI & IOC
What is it?
Powered by
Small components that are: independent, reusable, interchamgeable
We gain such benefits like: small classes (SRP), easy maintenance,
extensibility and testability
Dependency Injection is a set of practices that allow to build loosely coupled
applications
Powered by
DI & IOC
What is it?
IoC
Classic design
Powered by
ClassA ClassB
ClassC
ClassD
creates
IoC design
Powered by
ClassA ClassB
ClassC
ClassD
requires
Container
Model
Instance of ClassA
GetInstance
Lublin Startup Festival - Mobile Architecture Design Patterns
Lublin Startup Festival - Mobile Architecture Design Patterns
Lublin Startup Festival - Mobile Architecture Design Patterns
Lublin Startup Festival - Mobile Architecture Design Patterns
CQRS
4
Powered by
Query stands for reading
Commands stands for writing
Command/Query Responsibility Segregation (CQRS) is the idea that you
can use a different model to update information than the model you use to
read information (web experience).
CQRS
What is it?
Powered by
CQRS
Powered by
ALL OF THIS TO PROVIDE
SCALABILITY & A CONSISTENT
VIEW OF THE DATA.
[WEB]
Powered by
Classes are responsible for doing one particural job
Easy testability, extensibility and readability
Easy to mantain
Can be shared via multiple projects (portable)
Adventages of CQRS in mobile application:
CQRS
Why do we need it?
Powered by
Lublin Startup Festival - Mobile Architecture Design Patterns
Lublin Startup Festival - Mobile Architecture Design Patterns
Lublin Startup Festival - Mobile Architecture Design Patterns
Lublin Startup Festival - Mobile Architecture Design Patterns
Lublin Startup Festival - Mobile Architecture Design Patterns
Lublin Startup Festival - Mobile Architecture Design Patterns
TOOLS & TIPS
5
Powered by
MrAdvice – AOP tool
MethodTimer – decorates method with a timer
NullGuard – useful for Defensive Programming
Visualize – DebuggerDisplay weaver
Fody is a extensible tool for weaving .net assemblies
Tools - Fody
Powered by
Polly is a .NET 3.5 / 4.0 / 4.5 / PCL (Profile 259) library that allows
developers to express transient exception handling policies such as Retry,
Retry Forever, Wait and Retry or Circuit Breaker in a fluent manner.
Tools - Polly
Powered by
await Policy
.Handle<SqlException>(ex => ex.Number == 1205)
.Or<ArgumentException>(ex => ex.ParamName == "example")
.RetryAsync()
.ExecuteAsync(() => DoSomethingAsync());
Cimbalino Toolkit is a set of useful and powerful tools that will help you build
your Windows Platform applications.
Tools - Cimbalino
Powered by
Supports:
Windows Phone Silverlight 8.0+
Windows Phone / Windows Store 8.0 (WinRT)
Universal App Platform (Windows 10)
What do we get?
Tools - Cimbalino
Powered by
Behaviors
Converters
Extension classes
Services
Helpers
What do we get?
Tools - Resharper
Powered by
Better IntelliSense
Great refactor tool
XAML Support
R# just rocks!
Better to:
Tip #1 – Universal Apps 8.1
Powered by
Separate styles and templates using stalellite libraries
Add ViewModels to portable library NOT to shared project
Design your app architecture to support multiple platforms like Xamarin
Design your project to support adapter pattern
Throwing exceptions from layers is not the best way to handle errors
What do we get?
Tip #2 – Windows 10 XAML
Powered by
Improved XAML performance
x:Bind – faster compiled binding
Adaptive design
.Net Native
App design guidelines
Tip #3 – Xamarin
Powered by
Design your code logic to be not dependant on specific platform
Test your code on each platform
Don’t code without thinking about the problem
Design your code to be simply and readable.
Don’t overengineer your app
QUESTIONS?
Karol Szmaj
karol.szmaj@whallalabs.com
VP, CTO
+48 725 787 006
Powered by

More Related Content

PPSX
Multiplatform App Architecture
Edwin Van Schaick
 
PPTX
Mobile architecture options
johnsprunger
 
PPSX
Cross platform mobile application architecture for enterprise
Venkat Alagarsamy
 
PPTX
Introduction to Hybrid Application Development
Dotitude
 
PDF
Mobile App Development
Chris Morrell
 
PDF
Mobile Development Architecture Ppt with Slides, Book Notes on using Web Silv...
Bala Subra
 
PPTX
Kony one studio technical training
Niranjan Kumar Reddy
 
PDF
Cross Platform Mobile App Development
Annmarie Lanesey
 
Multiplatform App Architecture
Edwin Van Schaick
 
Mobile architecture options
johnsprunger
 
Cross platform mobile application architecture for enterprise
Venkat Alagarsamy
 
Introduction to Hybrid Application Development
Dotitude
 
Mobile App Development
Chris Morrell
 
Mobile Development Architecture Ppt with Slides, Book Notes on using Web Silv...
Bala Subra
 
Kony one studio technical training
Niranjan Kumar Reddy
 
Cross Platform Mobile App Development
Annmarie Lanesey
 

What's hot (20)

PPTX
Cross Platform Mobile Application Architecture
Derrick Bowen
 
PPTX
Hybrid Mobile Development
Shai Raiten
 
PDF
Building Effective and Rapid Applications with IBM MobileFirst Platform
Andrew Ferrier
 
PPTX
Mobile applications chapter 5
Akib B. Momin
 
PPT
On Mobile- Product Strategy
BusinessIntelligenze
 
PPTX
IBM Worklight for Digital Agencies
Graham Churchill
 
PPTX
Developing For The Business
Dipesh Mukerji
 
PDF
Architecture app
Ynon Perek
 
PDF
Building Mobile Cross-Platform Apps with HTML5, jQuery Mobile & PhoneGap
Nick Landry
 
PDF
Mobile application development strategy and execution
InnoTech
 
PPTX
Mobility testing day_1_ppt
sayhi2sudarshan
 
PPTX
Introduction to hybrid application development
Kunjan Thakkar
 
PPTX
Javascript frameworks
RajkumarJangid7
 
PPTX
Hybrid App Development with PhoneGap
Dotitude
 
PPTX
Mobile application architecture
Christos Matskas
 
PDF
Building Universal Windows Apps for Smartphones and Tablets with XAML & C#
Nick Landry
 
ODP
Hybrid application development
Knoldus Inc.
 
PPTX
Kony - End-to-End Proof of Technology
Dipesh Mukerji
 
PPT
Android - Anroid Pproject
Vibrant Technologies & Computers
 
PPTX
Top 4 Cross Platform tools for Mobile App Development
techugo
 
Cross Platform Mobile Application Architecture
Derrick Bowen
 
Hybrid Mobile Development
Shai Raiten
 
Building Effective and Rapid Applications with IBM MobileFirst Platform
Andrew Ferrier
 
Mobile applications chapter 5
Akib B. Momin
 
On Mobile- Product Strategy
BusinessIntelligenze
 
IBM Worklight for Digital Agencies
Graham Churchill
 
Developing For The Business
Dipesh Mukerji
 
Architecture app
Ynon Perek
 
Building Mobile Cross-Platform Apps with HTML5, jQuery Mobile & PhoneGap
Nick Landry
 
Mobile application development strategy and execution
InnoTech
 
Mobility testing day_1_ppt
sayhi2sudarshan
 
Introduction to hybrid application development
Kunjan Thakkar
 
Javascript frameworks
RajkumarJangid7
 
Hybrid App Development with PhoneGap
Dotitude
 
Mobile application architecture
Christos Matskas
 
Building Universal Windows Apps for Smartphones and Tablets with XAML & C#
Nick Landry
 
Hybrid application development
Knoldus Inc.
 
Kony - End-to-End Proof of Technology
Dipesh Mukerji
 
Android - Anroid Pproject
Vibrant Technologies & Computers
 
Top 4 Cross Platform tools for Mobile App Development
techugo
 
Ad

Similar to Lublin Startup Festival - Mobile Architecture Design Patterns (20)

PDF
Scale security for a dollar or less
Mohammed A. Imran
 
PDF
Strengthen and Scale Security for a dollar or less
Mohammed A. Imran
 
PPT
Presentation 1 open source tools in continuous integration environment v1.0
Jasmine Conseil
 
PDF
Strengthen and Scale Security Using DevSecOps - OWASP Indonesia
Mohammed A. Imran
 
PDF
How to Secure Your Kubernetes Software Supply Chain at Scale
Anchore
 
PPT
Part 2 improving your software development v1.0
Jasmine Conseil
 
PDF
Ci tips and_tricks_linards_liepins
Linards Liep
 
PPTX
What is DevOps?
Tyler (TJ) McCleve
 
PDF
Software Development Standard Operating Procedure
rupeshchanchal
 
PPTX
Dev ops developer (session 3)
MSDEVMTL
 
PPTX
SDLC & DevOps Transformation with Agile
Abdel Moneim Emad
 
PDF
Let's banish "it works on my machine"
Stephanie Locke
 
PPTX
DevOps Presentation.pptx
Abdullah al Mamun
 
PDF
The Dev, Sec and Ops of API Security - API World
42Crunch
 
PPT
Continous Integration: A Case Study
Talentica Software
 
PDF
Profile_Ahmad2
Mohammad Owais Ahmad
 
PPTX
Webinar : Microservices and Containerization
Newt Global Consulting LLC
 
PPT
Continuous Integration: A Case Study
IndicThreads
 
PPT
The Magic Of Application Lifecycle Management In Vs Public
David Solivan
 
PDF
The DevOps paradigm - the evolution of IT professionals and opensource toolkit
Marco Ferrigno
 
Scale security for a dollar or less
Mohammed A. Imran
 
Strengthen and Scale Security for a dollar or less
Mohammed A. Imran
 
Presentation 1 open source tools in continuous integration environment v1.0
Jasmine Conseil
 
Strengthen and Scale Security Using DevSecOps - OWASP Indonesia
Mohammed A. Imran
 
How to Secure Your Kubernetes Software Supply Chain at Scale
Anchore
 
Part 2 improving your software development v1.0
Jasmine Conseil
 
Ci tips and_tricks_linards_liepins
Linards Liep
 
What is DevOps?
Tyler (TJ) McCleve
 
Software Development Standard Operating Procedure
rupeshchanchal
 
Dev ops developer (session 3)
MSDEVMTL
 
SDLC & DevOps Transformation with Agile
Abdel Moneim Emad
 
Let's banish "it works on my machine"
Stephanie Locke
 
DevOps Presentation.pptx
Abdullah al Mamun
 
The Dev, Sec and Ops of API Security - API World
42Crunch
 
Continous Integration: A Case Study
Talentica Software
 
Profile_Ahmad2
Mohammad Owais Ahmad
 
Webinar : Microservices and Containerization
Newt Global Consulting LLC
 
Continuous Integration: A Case Study
IndicThreads
 
The Magic Of Application Lifecycle Management In Vs Public
David Solivan
 
The DevOps paradigm - the evolution of IT professionals and opensource toolkit
Marco Ferrigno
 
Ad

Recently uploaded (20)

PPTX
Presentation about variables and constant.pptx
kr2589474
 
PDF
Protecting the Digital World Cyber Securit
dnthakkar16
 
PDF
Summary Of Odoo 18.1 to 18.4 : The Way For Odoo 19
CandidRoot Solutions Private Limited
 
PDF
Bandai Playdia The Book - David Glotz
BluePanther6
 
PDF
ChatPharo: an Open Architecture for Understanding How to Talk Live to LLMs
ESUG
 
PPTX
Contractor Management Platform and Software Solution for Compliance
SHEQ Network Limited
 
PDF
Enhancing Healthcare RPM Platforms with Contextual AI Integration
Cadabra Studio
 
PPTX
GALILEO CRS SYSTEM | GALILEO TRAVEL SOFTWARE
philipnathen82
 
PDF
49785682629390197565_LRN3014_Migrating_the_Beast.pdf
Abilash868456
 
PDF
lesson-2-rules-of-netiquette.pdf.bshhsjdj
jasmenrojas249
 
PDF
vAdobe Premiere Pro 2025 (v25.2.3.004) Crack Pre-Activated Latest
imang66g
 
PDF
Salesforce Implementation Services Provider.pdf
VALiNTRY360
 
PDF
Using licensed Data Loss Prevention (DLP) as a strategic proactive data secur...
Q-Advise
 
PPTX
AI-Ready Handoff: Auto-Summaries & Draft Emails from MQL to Slack in One Flow
bbedford2
 
PDF
Immersive experiences: what Pharo users do!
ESUG
 
PDF
49784907924775488180_LRN2959_Data_Pump_23ai.pdf
Abilash868456
 
PDF
On Software Engineers' Productivity - Beyond Misleading Metrics
Romén Rodríguez-Gil
 
PDF
WatchTraderHub - Watch Dealer software with inventory management and multi-ch...
WatchDealer Pavel
 
PDF
What to consider before purchasing Microsoft 365 Business Premium_PDF.pdf
Q-Advise
 
PDF
New Download MiniTool Partition Wizard Crack Latest Version 2025
imang66g
 
Presentation about variables and constant.pptx
kr2589474
 
Protecting the Digital World Cyber Securit
dnthakkar16
 
Summary Of Odoo 18.1 to 18.4 : The Way For Odoo 19
CandidRoot Solutions Private Limited
 
Bandai Playdia The Book - David Glotz
BluePanther6
 
ChatPharo: an Open Architecture for Understanding How to Talk Live to LLMs
ESUG
 
Contractor Management Platform and Software Solution for Compliance
SHEQ Network Limited
 
Enhancing Healthcare RPM Platforms with Contextual AI Integration
Cadabra Studio
 
GALILEO CRS SYSTEM | GALILEO TRAVEL SOFTWARE
philipnathen82
 
49785682629390197565_LRN3014_Migrating_the_Beast.pdf
Abilash868456
 
lesson-2-rules-of-netiquette.pdf.bshhsjdj
jasmenrojas249
 
vAdobe Premiere Pro 2025 (v25.2.3.004) Crack Pre-Activated Latest
imang66g
 
Salesforce Implementation Services Provider.pdf
VALiNTRY360
 
Using licensed Data Loss Prevention (DLP) as a strategic proactive data secur...
Q-Advise
 
AI-Ready Handoff: Auto-Summaries & Draft Emails from MQL to Slack in One Flow
bbedford2
 
Immersive experiences: what Pharo users do!
ESUG
 
49784907924775488180_LRN2959_Data_Pump_23ai.pdf
Abilash868456
 
On Software Engineers' Productivity - Beyond Misleading Metrics
Romén Rodríguez-Gil
 
WatchTraderHub - Watch Dealer software with inventory management and multi-ch...
WatchDealer Pavel
 
What to consider before purchasing Microsoft 365 Business Premium_PDF.pdf
Q-Advise
 
New Download MiniTool Partition Wizard Crack Latest Version 2025
imang66g
 

Lublin Startup Festival - Mobile Architecture Design Patterns

  • 1. MOBILE APP DEVELOPMENT ARCHITECTURE & DESIGN PATTERNS Powered by
  • 3. ABOUT ME Karol Szmaj [email protected] VP, CTO +48 725 787 006 Powered by
  • 4. Agenda Out of the box approach MVVM Inversion of Control Command and Query Responsibility Segregation Tools & Tips 1 2 3 4 5 6 Questions Powered by
  • 5. DESIGN PATTERNS ARE SET OF GUIDELINES NOT RULES Powered by
  • 6. Can be overkill for very simple application Requires more time to bootstrap app architecture Disadventages Powered by Design Pattern Overview Simplify maintenance Separation of concerns Minimize logic needed in UI Enable testability Reduce development time Easy to customize apps Adventages
  • 7. OUT OF THE BOX APPROACH CODE BEHIND 1 Powered by
  • 8. Fast app prototyping No time required for bootstraping application Simple design: action + handler Easy access to visual tree Pros Powered by Out of the box approach Code Behind
  • 9. Large view classes Breaks Single Responsibility Pattern Hard to mantain in future Poor code readability UI customization can break logic inside view Cons Powered by Out of the box approach Code Behind
  • 11. Creating small MVP of your product if there is an opportunity to refactor Testing features Small apps When you should use it? Powered by When you shouldn’t use it? Creating MVP without time to refactor Enterprise apps For apps with long-term support Out of the box approach Code Behind
  • 12. MVVM – MODEL VIEW VIEWMODEL 2 Powered by
  • 13. MVVM Model-View-ViewModel Powered by Notifications Data Binding Commands View ViewModel Model UI Logic Code Behind Presentation Logic Bussiness Logic And Data
  • 14. Creating long term-support apps When considering unit testing When we need better code mantainability When you should use it? MVVM approach Powered by When you shouldn’t use it? For app testing purpose When we don’t need testable bussines logic When project is very simple (avoid architecture overengineering)
  • 15. Lightweight Developer controls everything Implements: Command Patern, ViewModelBase, Messenger Has IoC Container MVVMLight MVVM frameworks Powered by
  • 16. WinRT focused Support C#, C++/CX and HTML/JS Validation, Conventions, Attached Events, Messenger, Logging Very modular Has IoC – Grace Container StyleMVVM MVVM frameworks Powered by
  • 17. More complex, harder bootstrap Better support for View Composition Event aggregator Conventions, Coroutines Stable! CaliburnMicro MVVM frameworks Powered by
  • 18. IOC – INVERSION OF CONTROL 3 Powered by
  • 19. It’s not a library, framework or tool It’s like a way of thinking, designing code and general guidelines Dependency Injection is a set of practices that allow to build loosely coupled applications DI & IOC What is it? Powered by
  • 20. Small components that are: independent, reusable, interchamgeable We gain such benefits like: small classes (SRP), easy maintenance, extensibility and testability Dependency Injection is a set of practices that allow to build loosely coupled applications Powered by DI & IOC What is it?
  • 21. IoC Classic design Powered by ClassA ClassB ClassC ClassD creates
  • 22. IoC design Powered by ClassA ClassB ClassC ClassD requires Container Model Instance of ClassA GetInstance
  • 28. Query stands for reading Commands stands for writing Command/Query Responsibility Segregation (CQRS) is the idea that you can use a different model to update information than the model you use to read information (web experience). CQRS What is it? Powered by
  • 30. ALL OF THIS TO PROVIDE SCALABILITY & A CONSISTENT VIEW OF THE DATA. [WEB] Powered by
  • 31. Classes are responsible for doing one particural job Easy testability, extensibility and readability Easy to mantain Can be shared via multiple projects (portable) Adventages of CQRS in mobile application: CQRS Why do we need it? Powered by
  • 39. MrAdvice – AOP tool MethodTimer – decorates method with a timer NullGuard – useful for Defensive Programming Visualize – DebuggerDisplay weaver Fody is a extensible tool for weaving .net assemblies Tools - Fody Powered by
  • 40. Polly is a .NET 3.5 / 4.0 / 4.5 / PCL (Profile 259) library that allows developers to express transient exception handling policies such as Retry, Retry Forever, Wait and Retry or Circuit Breaker in a fluent manner. Tools - Polly Powered by await Policy .Handle<SqlException>(ex => ex.Number == 1205) .Or<ArgumentException>(ex => ex.ParamName == "example") .RetryAsync() .ExecuteAsync(() => DoSomethingAsync());
  • 41. Cimbalino Toolkit is a set of useful and powerful tools that will help you build your Windows Platform applications. Tools - Cimbalino Powered by Supports: Windows Phone Silverlight 8.0+ Windows Phone / Windows Store 8.0 (WinRT) Universal App Platform (Windows 10)
  • 42. What do we get? Tools - Cimbalino Powered by Behaviors Converters Extension classes Services Helpers
  • 43. What do we get? Tools - Resharper Powered by Better IntelliSense Great refactor tool XAML Support R# just rocks!
  • 44. Better to: Tip #1 – Universal Apps 8.1 Powered by Separate styles and templates using stalellite libraries Add ViewModels to portable library NOT to shared project Design your app architecture to support multiple platforms like Xamarin Design your project to support adapter pattern Throwing exceptions from layers is not the best way to handle errors
  • 45. What do we get? Tip #2 – Windows 10 XAML Powered by Improved XAML performance x:Bind – faster compiled binding Adaptive design .Net Native
  • 46. App design guidelines Tip #3 – Xamarin Powered by Design your code logic to be not dependant on specific platform Test your code on each platform Don’t code without thinking about the problem Design your code to be simply and readable. Don’t overengineer your app