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
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
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
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

What's hot

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

What's hot (20)

Cross Platform Mobile Application Architecture
Cross Platform Mobile Application ArchitectureCross Platform Mobile Application Architecture
Cross Platform Mobile Application Architecture
 
Hybrid Mobile Development
Hybrid Mobile DevelopmentHybrid Mobile Development
Hybrid Mobile Development
 
Building Effective and Rapid Applications with IBM MobileFirst Platform
Building Effective and Rapid Applications with IBM MobileFirst PlatformBuilding Effective and Rapid Applications with IBM MobileFirst Platform
Building Effective and Rapid Applications with IBM MobileFirst Platform
 
Mobile applications chapter 5
Mobile applications chapter 5Mobile applications chapter 5
Mobile applications chapter 5
 
On Mobile- Product Strategy
On Mobile- Product StrategyOn Mobile- Product Strategy
On Mobile- Product Strategy
 
IBM Worklight for Digital Agencies
IBM Worklight for Digital AgenciesIBM Worklight for Digital Agencies
IBM Worklight for Digital Agencies
 
Developing For The Business
Developing For The BusinessDeveloping For The Business
Developing For The Business
 
Architecture app
Architecture appArchitecture app
Architecture app
 
Building Mobile Cross-Platform Apps with HTML5, jQuery Mobile & PhoneGap
Building Mobile Cross-Platform Apps with HTML5, jQuery Mobile & PhoneGapBuilding Mobile Cross-Platform Apps with HTML5, jQuery Mobile & PhoneGap
Building Mobile Cross-Platform Apps with HTML5, jQuery Mobile & PhoneGap
 
Mobile application development strategy and execution
Mobile application development   strategy and executionMobile application development   strategy and execution
Mobile application development strategy and execution
 
Mobility testing day_1_ppt
Mobility testing day_1_pptMobility testing day_1_ppt
Mobility testing day_1_ppt
 
Introduction to hybrid application development
Introduction to hybrid application developmentIntroduction to hybrid application development
Introduction to hybrid application development
 
Javascript frameworks
Javascript frameworksJavascript frameworks
Javascript frameworks
 
Hybrid App Development with PhoneGap
Hybrid App Development with PhoneGapHybrid App Development with PhoneGap
Hybrid App Development with PhoneGap
 
Mobile application architecture
Mobile application architectureMobile application architecture
Mobile application architecture
 
Building Universal Windows Apps for Smartphones and Tablets with XAML & C#
Building Universal Windows Apps for Smartphones and Tablets with XAML & C#Building Universal Windows Apps for Smartphones and Tablets with XAML & C#
Building Universal Windows Apps for Smartphones and Tablets with XAML & C#
 
Hybrid application development
Hybrid application developmentHybrid application development
Hybrid application development
 
Kony - End-to-End Proof of Technology
Kony - End-to-End Proof of TechnologyKony - End-to-End Proof of Technology
Kony - End-to-End Proof of Technology
 
Android - Anroid Pproject
Android - Anroid PprojectAndroid - Anroid Pproject
Android - Anroid Pproject
 
Top 4 Cross Platform tools for Mobile App Development
Top 4 Cross Platform tools for Mobile App DevelopmentTop 4 Cross Platform tools for Mobile App Development
Top 4 Cross Platform tools for Mobile App Development
 

Similar to Lublin Startup Festival - Mobile Architecture Design Patterns

Scale security for a dollar or less
Scale security for a dollar or lessScale security for a dollar or less
Scale security for a dollar or less
Mohammed A. Imran
 
Strengthen and Scale Security for a dollar or less
Strengthen and Scale Security for a dollar or lessStrengthen and Scale Security for a dollar or less
Strengthen and Scale Security for a dollar or less
Mohammed A. Imran
 
Presentation 1 open source tools in continuous integration environment v1.0
Presentation 1   open source tools in continuous integration environment v1.0Presentation 1   open source tools in continuous integration environment v1.0
Presentation 1 open source tools in continuous integration environment v1.0
Jasmine Conseil
 
Strengthen and Scale Security Using DevSecOps - OWASP Indonesia
Strengthen and Scale Security Using DevSecOps - OWASP IndonesiaStrengthen and Scale Security Using DevSecOps - OWASP Indonesia
Strengthen and Scale Security Using DevSecOps - OWASP Indonesia
Mohammed A. Imran
 
Accelerate your Application Delivery with DevOps and Microservices
Accelerate your Application Delivery with DevOps and MicroservicesAccelerate your Application Delivery with DevOps and Microservices
Accelerate your Application Delivery with DevOps and Microservices
Amazon Web Services
 
Part 2 improving your software development v1.0
Part 2   improving your software development v1.0Part 2   improving your software development v1.0
Part 2 improving your software development v1.0
Jasmine Conseil
 
Ci tips and_tricks_linards_liepins
Ci tips and_tricks_linards_liepinsCi tips and_tricks_linards_liepins
Ci tips and_tricks_linards_liepins
Linards Liep
 
What is DevOps?
What is DevOps?What is DevOps?
What is DevOps?
Tyler (TJ) McCleve
 
Software Development Standard Operating Procedure
Software Development Standard Operating Procedure Software Development Standard Operating Procedure
Software Development Standard Operating Procedure
rupeshchanchal
 
Dev ops developer (session 3)
Dev ops developer (session 3)Dev ops developer (session 3)
Dev ops developer (session 3)
MSDEVMTL
 
From 0 to DevOps in 80 Days [Webinar Replay]
From 0 to DevOps in 80 Days [Webinar Replay]From 0 to DevOps in 80 Days [Webinar Replay]
From 0 to DevOps in 80 Days [Webinar Replay]
Dynatrace
 
SDLC & DevOps Transformation with Agile
SDLC & DevOps Transformation with AgileSDLC & DevOps Transformation with Agile
SDLC & DevOps Transformation with Agile
Abdel Moneim Emad
 
Let's banish "it works on my machine"
Let's banish "it works on my machine"Let's banish "it works on my machine"
Let's banish "it works on my machine"
Stephanie Locke
 
DevOps Presentation.pptx
DevOps Presentation.pptxDevOps Presentation.pptx
DevOps Presentation.pptx
Abdullah al Mamun
 
The Dev, Sec and Ops of API Security - API World
The Dev, Sec and Ops of API Security - API WorldThe Dev, Sec and Ops of API Security - API World
The Dev, Sec and Ops of API Security - API World
42Crunch
 
Continous Integration: A Case Study
Continous Integration: A Case StudyContinous Integration: A Case Study
Continous Integration: A Case Study
Talentica Software
 
Profile_Ahmad2
Profile_Ahmad2Profile_Ahmad2
Profile_Ahmad2
Mohammad Owais Ahmad
 
Webinar : Microservices and Containerization
Webinar : Microservices and ContainerizationWebinar : Microservices and Containerization
Webinar : Microservices and Containerization
Newt Global Consulting LLC
 
Continuous Integration: A Case Study
Continuous Integration: A Case StudyContinuous Integration: A Case Study
Continuous Integration: A Case Study
IndicThreads
 
The Magic Of Application Lifecycle Management In Vs Public
The Magic Of Application Lifecycle Management In Vs PublicThe Magic Of Application Lifecycle Management In Vs Public
The Magic Of Application Lifecycle Management In Vs Public
David Solivan
 

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

Scale security for a dollar or less
Scale security for a dollar or lessScale security for a dollar or less
Scale security for a dollar or less
 
Strengthen and Scale Security for a dollar or less
Strengthen and Scale Security for a dollar or lessStrengthen and Scale Security for a dollar or less
Strengthen and Scale Security for a dollar or less
 
Presentation 1 open source tools in continuous integration environment v1.0
Presentation 1   open source tools in continuous integration environment v1.0Presentation 1   open source tools in continuous integration environment v1.0
Presentation 1 open source tools in continuous integration environment v1.0
 
Strengthen and Scale Security Using DevSecOps - OWASP Indonesia
Strengthen and Scale Security Using DevSecOps - OWASP IndonesiaStrengthen and Scale Security Using DevSecOps - OWASP Indonesia
Strengthen and Scale Security Using DevSecOps - OWASP Indonesia
 
Accelerate your Application Delivery with DevOps and Microservices
Accelerate your Application Delivery with DevOps and MicroservicesAccelerate your Application Delivery with DevOps and Microservices
Accelerate your Application Delivery with DevOps and Microservices
 
Part 2 improving your software development v1.0
Part 2   improving your software development v1.0Part 2   improving your software development v1.0
Part 2 improving your software development v1.0
 
Ci tips and_tricks_linards_liepins
Ci tips and_tricks_linards_liepinsCi tips and_tricks_linards_liepins
Ci tips and_tricks_linards_liepins
 
What is DevOps?
What is DevOps?What is DevOps?
What is DevOps?
 
Software Development Standard Operating Procedure
Software Development Standard Operating Procedure Software Development Standard Operating Procedure
Software Development Standard Operating Procedure
 
Dev ops developer (session 3)
Dev ops developer (session 3)Dev ops developer (session 3)
Dev ops developer (session 3)
 
From 0 to DevOps in 80 Days [Webinar Replay]
From 0 to DevOps in 80 Days [Webinar Replay]From 0 to DevOps in 80 Days [Webinar Replay]
From 0 to DevOps in 80 Days [Webinar Replay]
 
SDLC & DevOps Transformation with Agile
SDLC & DevOps Transformation with AgileSDLC & DevOps Transformation with Agile
SDLC & DevOps Transformation with Agile
 
Let's banish "it works on my machine"
Let's banish "it works on my machine"Let's banish "it works on my machine"
Let's banish "it works on my machine"
 
DevOps Presentation.pptx
DevOps Presentation.pptxDevOps Presentation.pptx
DevOps Presentation.pptx
 
The Dev, Sec and Ops of API Security - API World
The Dev, Sec and Ops of API Security - API WorldThe Dev, Sec and Ops of API Security - API World
The Dev, Sec and Ops of API Security - API World
 
Continous Integration: A Case Study
Continous Integration: A Case StudyContinous Integration: A Case Study
Continous Integration: A Case Study
 
Profile_Ahmad2
Profile_Ahmad2Profile_Ahmad2
Profile_Ahmad2
 
Webinar : Microservices and Containerization
Webinar : Microservices and ContainerizationWebinar : Microservices and Containerization
Webinar : Microservices and Containerization
 
Continuous Integration: A Case Study
Continuous Integration: A Case StudyContinuous Integration: A Case Study
Continuous Integration: A Case Study
 
The Magic Of Application Lifecycle Management In Vs Public
The Magic Of Application Lifecycle Management In Vs PublicThe Magic Of Application Lifecycle Management In Vs Public
The Magic Of Application Lifecycle Management In Vs Public
 

Recently uploaded

E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
Hornet Dynamics
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
mz5nrf0n
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
Sven Peters
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
Łukasz Chruściel
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
Octavian Nadolu
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
Rakesh Kumar R
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
Green Software Development
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
Peter Muessig
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
Rakesh Kumar R
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
TheSMSPoint
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
ICS
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Crescat
 

Recently uploaded (20)

E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
 

Lublin Startup Festival - Mobile Architecture Design Patterns

  • 1. MOBILE APP DEVELOPMENT ARCHITECTURE & DESIGN PATTERNS 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
  • 10.
  • 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
  • 23.
  • 24.
  • 25.
  • 26.
  • 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
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 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