SlideShare a Scribd company logo
1 of 30
Xamarin in real life: our MVP approach
Antonino Cacace – Daniele Leombruni
ROME - APRIL 13/14 2018
{ Who we are }
What’s Xamarin
Model View Presenter on Xamarin
Dependency Injection
Xamarin toolbox: must have libraries
Why MVP
Code sharing performance
Size performance
Startup performance
The dark side of Xamarin
Who we are
Daniele Leombruni
Mobile Architect for
Mobile & Creative Technology
at NTT Data.
iOS developer since 2015
Xamarin developer since 2015
Antonino Cacace
Mobile Architect for
Mobile & Creative Technology
at NTT Data.
Android developer since 2012
Xamarin developer since 2015
WeuseXamarin since2014 and in these
yearswe haveimproved our developing
processto obtain better performance
and quality.
Wedevelop apps for themost
important customersinenergy, media,
telco, manufactoring& retail sectors.
Who we are
Who we are
{ What’s Xamarin }
Model View Presenter on Xamarin
Dependency Injection
Xamarin toolbox: must have libraries
Why MVP
Code sharing performance
Size performance
Startup performance
The dark side of Xamarin
What’s Xamarin
Intro
Mono Framework
Open source development
platform based on the .NET
Framework, allows
developers to build cross-
platform applications
Xamarin Compiler
Compile C# code to IL
or to ARM assembly
code.
Visual Studio
Multi OS, powerfull
IDE
Xamarin.iOS and
Xamarin Android
Expose complete
native SDKs for .NET
developers
• Xamarinisamobiledevelopmentplatformto build,testandmonitoring cross-
platformapplicationsina fullynativemannerwith a singlecode base(known as
“Shared Code”)and with a single programming language (C#).
• ThemainXamarin’saim is to reusethe same shared code (about 40%)
acrossdifferentplatformsreducing significantlyboth:
• Developmentand Maintenancecosts
• Time-to-market
Xamarin apps have access to the full native spectrum of functionality exposed by the
underlying platform and device. 100% SDK mapping.
Native api access
Native performance
Native user interfaces
Xamarin apps leverage platform-specific hardware acceleration, and are
compiled for native performance
Xamarin apps are built with standard, native user interface
controls.
What’s Xamarin
Xamarin Native
Shared C#App Logic
Platform-specific C#Platform-specific C#
CompilercompilesdowntoIntermediateLanguage (IL),
which isthenJust-in-Time( JIT) compiled tonativeassembly
whentheapplicationlaunches.
Thereisalsoan experimentalversionof
*AOT compilerforAndroid.
Xamarin.iOS andXamarin.Android arebuilt on topofMono
Ahead-of-Time( AOT)Compilercompiles Xamarin.iOS
applicationsdirectlytonativeARM assemblycode.
Mono
AOT
Code
Mono
IL
JIT*
What’s Xamarin
What’s inside a Xamarin app
Who we are
What’s Xamarin
{ Model View Presenter on Xamarin }
Dependency Injection
Xamarin toolbox: must have libraries
Why MVP
Code sharing performance
Size performance
Startup performance
The dark side of Xamarin
BUSINESSLOGIC
SharedCode
(Platform indipendent)
UI
iOS/Android
(Platform dipendent)
MVP on Xamarin
MVP Approach
MODEL PRESENTER VIEW
Our approach aims to maximize the reuse of code.
In order to do so, we use Model View Presenter
architecture implementing the model and the
presenter in the shared code and the view in
platform dependent code.
*Or whateverView implementation(Fragment,Conductor, etc.)
MVP on Xamarin
Xamarin Implementation
IPresenter
INTERACTOR PRESENTER
UIViewController
*Activity
SharedLibrary
(Platformindipendent)
iOS/Android
(Platformdipendent)
The backbones of the application are the contract interfaces.
It’s essential to define it well from the beginning.
IController
Who we are
What’s Xamarin
Model View Presenter on Xamarin
{ Dependency Injection }
Xamarin toolbox: must have libraries
Why MVP
Code sharing performance
Size performance
Startup performance
The dark side of Xamarin
Dependency Injection, based on the
IoC (Inversion of Control) pattern,
allows accessing platform specific
features in Portable Class Library
(PCL).
Shared code depends on interfaces
resolved in native code using a
simple and lightweight dependency
injection implementation.
SERVICE
CONTAINER
Depencency Injection
How
SHARED CODE NATIVE CODE
<RESOLVE> <REGISTER>
Who we are
What’s Xamarin
Model View Presenter on Xamarin
Dependency Injection
{ Xamarin Toolbox: must have libraries }
Why MVP
Code sharing performance
Size performance
Startup performance
The dark side of Xamarin
Refit
.NET Standard 1.4
REST library
Refit, a REST client library,
that solves the problem of
making API calls
Xamarin Toolbox
Must have libraries
Rx.Net
Reactive porting for .Net
framework.
Rx is a library for composing
asynchronous, and event-
based code with
observables, and configuring
it via LINQ.
Conductor
Fragment alternative for
Android.
Provide a framework that
allows building view-based
Android apps and thus
completely avoiding the use
of fragments.
SharedC# AppLogic
Platform-specificC#Platform-specificC#
SharedC# AppLogic
Platform-specificC#Platform-specificC#
SharedC# AppLogic
Platform-specificC#Platform-specificC#
Who we are
What’s Xamarin
Model View Presenter on Xamarin
Dependency Injection
Xamarin toolbox: must have libraries
{ Why MVP }
Code sharing performance
Size performance
Startup performance
The dark side of Xamarin
MODULARITY
RESPONSABILITY
XAMARIN
CODE
SHARING
Using MVP keeps logic layer away
from the graphic one: in addition
each component is strongly
cohesive, has a specific role and
responsability; code is highly
modular.
This structure simplifies unit test
phase: test design and execution
are relative only to logic layer.
Using Xamarin, where the logical
layer is shared between platforms,
increases the benefits of MVP by
extending them to the development
of apps for multiple platforms.
Why MVP
Benefits
SIMPLIFY
TESTING
Who we are
What’s Xamarin
Model View Presenter on Xamarin
Dependency Injection
Xamarin toolbox: must have libraries
Why MVP
{ Code sharing performance }
Size performance
Startup performance
The dark side of Xamarin
Code sharing performance
Average shared code in real enterprise projects
The statistics of code reuse on the Xamarin official site is around 40%.
Using our MVP Approach, maximise the reuse of code of 25~30%. This range of values depends
on the complexity of the app graphics.
7K 7K 8KRetail brand #2
Retail Brand #1 5K 12K 10K
18%
SHARED iOS Android
14K 34K 29KEnergie brand #1
9K 11K 10K
NOT
MVP
PA brand #1
5K 5K 9K
OUR
MVP
PA brand #2
30%
11K 18K 17KEnergie brand #2
#of codelines
27K
77K
30K
19K
22K
46K
Who we are
What’s Xamarin
Model View Presenter on Xamarin
Dependency Injection
Xamarin toolbox: must have libraries
Why MVP
Code sharing performance
{ Size performance }
Startup performance
The dark side of Xamarin
Size performance
Xamarin must incorporate
monoruntime: this implies that
the final dimensions of apk and
ipa, in Xamarin environment,
are greater than thesame builds
in native one.
XAMARIN
FORMS
~ 15 Mb
XAMARIN
ANDROID
~ 5.5 MbANDROID
NATIVE
~ 1 Mb
Size performance
Apk and ipa size
XAMARIN
FORMS
~ 10 Mb
XAMARIN
iOS
~ 6 MbIOS
NATIVE
~ 2 Mb
The graphics below show apk and ipa size of an «Hello world» project in native, Xamarin native, and
Xamarin Forms environment using «Link Framework SDK Only».
Size performance
Linker
Xamarin Linker is used in iOS and Android projects, to remove unused code from compiled
assemblies. This helps reduce the final size of the apk or ipa.
Linker has three options:
None/Don’tLink,meansthelinkerwon’tdoanything
SdkAssemblies Only/Link FrameworkSDKsOnly islimitedtobase classlibraries.
Sdkand User Assemblies/Link Alliseverything,includingyourcode.
Who we are
What’s Xamarin
Model View Presenter on Xamarin
Dependency Injection
Xamarin toolbox: must have libraries
Why MVP
Code sharing performance
Size performance
{ Startup performance }
The dark side of Xamarin
Average startup time of an app on
Android, Xamarin Android and
Xamarin Forms
Startup performance
Average startup time on Android
310 ms
45 ms
150 ms
23 ms15 ms
80 ms
Who we are
What’s Xamarin
Model View Presenter on Xamarin
Dependency Injection
Xamarin toolbox: must have libraries
Why MVP
Code sharing performance
Size performance
Startup performance
{ The dark side of Xamarin }
The dark side of Xamarin
Pros
C#
«One language to rule
them all»
C# is powerful and flexible,
general-purpose, object-
oriented programming
language. You don’t need to
know Swift, Java, Kotlin or
ObjectiveC(thank god).
Less code
«Less is more»
Less code mean less work,
less bugs and less costs.
Great performance
«Fast as native»
Xamarin app performance
are almost like native app.
Another layer of (possible) bugs.
Hard to integrate some libraries
(binding is not always easy).
Visual Studio (for Mac) is (still) not
mature
Community not big as native
communities.
The dark side of Xamarin
Cons
{ Thank you }

More Related Content

What's hot

Should you choose react native or swift for i os app development
Should you choose react native or swift for i os app development Should you choose react native or swift for i os app development
Should you choose react native or swift for i os app development Moon Technolabs Pvt. Ltd.
 
Top reasons why to choose xamarin for mobile app development
Top reasons why to choose xamarin for mobile app developmentTop reasons why to choose xamarin for mobile app development
Top reasons why to choose xamarin for mobile app developmentFugenX
 
Where Do Cross-Platform App Frameworks Stand in 2020?
Where Do Cross-Platform App Frameworks Stand in 2020?Where Do Cross-Platform App Frameworks Stand in 2020?
Where Do Cross-Platform App Frameworks Stand in 2020?Marianne Harness
 
Best Practices for Cross-Platform Native Applications
Best Practices for Cross-Platform Native ApplicationsBest Practices for Cross-Platform Native Applications
Best Practices for Cross-Platform Native ApplicationsKevin Whinnery
 
Cross-platform App Development Company
Cross-platform App Development CompanyCross-platform App Development Company
Cross-platform App Development CompanyThe NineHertz
 
Cross platform mobile application development
Cross platform mobile application developmentCross platform mobile application development
Cross platform mobile application developmentwebprogr.com
 
Designing Modules for the Browser and Node with Browserify
Designing Modules for the Browser and Node with BrowserifyDesigning Modules for the Browser and Node with Browserify
Designing Modules for the Browser and Node with BrowserifyKevin Whinnery
 
Cross platform approach for mobile application development : a survey
Cross platform approach for mobile application development : a surveyCross platform approach for mobile application development : a survey
Cross platform approach for mobile application development : a surveyMounaim Latif
 
7 network programmability concepts api
7 network programmability concepts api7 network programmability concepts api
7 network programmability concepts apiSagarR24
 
Felgo vs. Flutter vs. React Native: An in-Depth Comparison
Felgo vs. Flutter vs. React Native: An in-Depth ComparisonFelgo vs. Flutter vs. React Native: An in-Depth Comparison
Felgo vs. Flutter vs. React Native: An in-Depth ComparisonKaty Slemon
 
Ibm certified mobile application developer worklight v6.0
Ibm certified mobile application developer   worklight v6.0Ibm certified mobile application developer   worklight v6.0
Ibm certified mobile application developer worklight v6.0Nam Le Quoc
 
Applix Appdoit Presentation
Applix Appdoit PresentationApplix Appdoit Presentation
Applix Appdoit PresentationApplix Srl
 
Native vs Hybrid - Options to develop your mobile application
Native vs Hybrid - Options to develop your mobile applicationNative vs Hybrid - Options to develop your mobile application
Native vs Hybrid - Options to develop your mobile applicationLoic Ortola
 
The Phonegap Architecture
The Phonegap ArchitectureThe Phonegap Architecture
The Phonegap ArchitectureFrank Gielen
 
Five Steps to Add AppUp .NET SDK to Microsoft Visual Studio
Five Steps to Add AppUp .NET SDK to Microsoft Visual StudioFive Steps to Add AppUp .NET SDK to Microsoft Visual Studio
Five Steps to Add AppUp .NET SDK to Microsoft Visual Studioreadwritehack
 

What's hot (20)

Xamarin the good, the bad and the ugly
Xamarin  the good, the bad and the uglyXamarin  the good, the bad and the ugly
Xamarin the good, the bad and the ugly
 
Should you choose react native or swift for i os app development
Should you choose react native or swift for i os app development Should you choose react native or swift for i os app development
Should you choose react native or swift for i os app development
 
Codename one
Codename oneCodename one
Codename one
 
Top reasons why to choose xamarin for mobile app development
Top reasons why to choose xamarin for mobile app developmentTop reasons why to choose xamarin for mobile app development
Top reasons why to choose xamarin for mobile app development
 
Where Do Cross-Platform App Frameworks Stand in 2020?
Where Do Cross-Platform App Frameworks Stand in 2020?Where Do Cross-Platform App Frameworks Stand in 2020?
Where Do Cross-Platform App Frameworks Stand in 2020?
 
Best Practices for Cross-Platform Native Applications
Best Practices for Cross-Platform Native ApplicationsBest Practices for Cross-Platform Native Applications
Best Practices for Cross-Platform Native Applications
 
Cross-platform App Development Company
Cross-platform App Development CompanyCross-platform App Development Company
Cross-platform App Development Company
 
Tcdnug xamarin
Tcdnug xamarinTcdnug xamarin
Tcdnug xamarin
 
Cross platform mobile application development
Cross platform mobile application developmentCross platform mobile application development
Cross platform mobile application development
 
Designing Modules for the Browser and Node with Browserify
Designing Modules for the Browser and Node with BrowserifyDesigning Modules for the Browser and Node with Browserify
Designing Modules for the Browser and Node with Browserify
 
Eclipse Way
Eclipse WayEclipse Way
Eclipse Way
 
New Dot Net SDK
New Dot Net SDKNew Dot Net SDK
New Dot Net SDK
 
Cross platform approach for mobile application development : a survey
Cross platform approach for mobile application development : a surveyCross platform approach for mobile application development : a survey
Cross platform approach for mobile application development : a survey
 
7 network programmability concepts api
7 network programmability concepts api7 network programmability concepts api
7 network programmability concepts api
 
Felgo vs. Flutter vs. React Native: An in-Depth Comparison
Felgo vs. Flutter vs. React Native: An in-Depth ComparisonFelgo vs. Flutter vs. React Native: An in-Depth Comparison
Felgo vs. Flutter vs. React Native: An in-Depth Comparison
 
Ibm certified mobile application developer worklight v6.0
Ibm certified mobile application developer   worklight v6.0Ibm certified mobile application developer   worklight v6.0
Ibm certified mobile application developer worklight v6.0
 
Applix Appdoit Presentation
Applix Appdoit PresentationApplix Appdoit Presentation
Applix Appdoit Presentation
 
Native vs Hybrid - Options to develop your mobile application
Native vs Hybrid - Options to develop your mobile applicationNative vs Hybrid - Options to develop your mobile application
Native vs Hybrid - Options to develop your mobile application
 
The Phonegap Architecture
The Phonegap ArchitectureThe Phonegap Architecture
The Phonegap Architecture
 
Five Steps to Add AppUp .NET SDK to Microsoft Visual Studio
Five Steps to Add AppUp .NET SDK to Microsoft Visual StudioFive Steps to Add AppUp .NET SDK to Microsoft Visual Studio
Five Steps to Add AppUp .NET SDK to Microsoft Visual Studio
 

Similar to Xamarin MVP Approach: Code Sharing, Performance and Best Practices

Why is xamarin the preferred app development platform among app developers
Why is xamarin the preferred app development platform among app developersWhy is xamarin the preferred app development platform among app developers
Why is xamarin the preferred app development platform among app developersFullestop
 
Xamarin vs. React Native Choosing the Right Software in 2023.pdf
Xamarin vs. React Native Choosing the Right Software in 2023.pdfXamarin vs. React Native Choosing the Right Software in 2023.pdf
Xamarin vs. React Native Choosing the Right Software in 2023.pdfTechugo
 
Xamarin vs. React Native Which Software Should You Choose in 2023.pdf
Xamarin vs. React Native Which Software Should You Choose in 2023.pdfXamarin vs. React Native Which Software Should You Choose in 2023.pdf
Xamarin vs. React Native Which Software Should You Choose in 2023.pdfTechugo
 
Why is xamarin the preferred app development platform among app developers
Why is xamarin the preferred app development platform among app developersWhy is xamarin the preferred app development platform among app developers
Why is xamarin the preferred app development platform among app developersFullestop
 
Why is xamarin the most popular framework for business app development
Why is xamarin the most popular framework for business app developmentWhy is xamarin the most popular framework for business app development
Why is xamarin the most popular framework for business app developmentFullestop
 
Xamarin vs. native script which one is the ideal cross-platform framework fo...
Xamarin vs. native script  which one is the ideal cross-platform framework fo...Xamarin vs. native script  which one is the ideal cross-platform framework fo...
Xamarin vs. native script which one is the ideal cross-platform framework fo...MoonTechnolabsPvtLtd
 
Reason why app development company choose xamarin for cross platform
Reason why app development company choose xamarin for cross platformReason why app development company choose xamarin for cross platform
Reason why app development company choose xamarin for cross platformAimore Technologies
 
Why Xamarin is the Best to Build Cost-Effective Mobile Apps
Why Xamarin is the Best to Build Cost-Effective Mobile AppsWhy Xamarin is the Best to Build Cost-Effective Mobile Apps
Why Xamarin is the Best to Build Cost-Effective Mobile AppsRosalie Lauren
 
Xamarin.forms vs. xamarin native how to choose the one you need
Xamarin.forms vs. xamarin native  how to choose the one you need Xamarin.forms vs. xamarin native  how to choose the one you need
Xamarin.forms vs. xamarin native how to choose the one you need MoonTechnolabsPvtLtd
 
Xamarin. Forms vs. Xamarin Native_ How to choose_.pdf
Xamarin. Forms vs. Xamarin Native_ How to choose_.pdfXamarin. Forms vs. Xamarin Native_ How to choose_.pdf
Xamarin. Forms vs. Xamarin Native_ How to choose_.pdfMoonTechnolabsPvtLtd
 
Top Reasons to Choose Xamarin for Mobile App Development in 2022
Top Reasons to Choose Xamarin for Mobile App Development in 2022Top Reasons to Choose Xamarin for Mobile App Development in 2022
Top Reasons to Choose Xamarin for Mobile App Development in 2022Edwardallen40
 
Why Xamarin is the ideal choice for the app development company_.pdf
Why Xamarin is the ideal choice for the app development company_.pdfWhy Xamarin is the ideal choice for the app development company_.pdf
Why Xamarin is the ideal choice for the app development company_.pdfMoon Technolabs Pvt. Ltd.
 
Flutter vs Ionic vs React Native vs Xamarin - Which is best for Cross-Platfor...
Flutter vs Ionic vs React Native vs Xamarin - Which is best for Cross-Platfor...Flutter vs Ionic vs React Native vs Xamarin - Which is best for Cross-Platfor...
Flutter vs Ionic vs React Native vs Xamarin - Which is best for Cross-Platfor...simonedaniels3
 
Why is xamarin app development important for your business
Why is xamarin app development important for your businessWhy is xamarin app development important for your business
Why is xamarin app development important for your businessFullestop
 
Why xamarin app development is growing for startups
Why xamarin app development is growing for startupsWhy xamarin app development is growing for startups
Why xamarin app development is growing for startupsMarie Weaver
 
Xamarin_ A Cross-Platform Framework with Top 6 Features.pdf
Xamarin_ A Cross-Platform Framework with Top 6 Features.pdfXamarin_ A Cross-Platform Framework with Top 6 Features.pdf
Xamarin_ A Cross-Platform Framework with Top 6 Features.pdfMoon Technolabs Pvt. Ltd.
 
Most Useful features of Xamarin as a Cross-platform framework.pdf
Most Useful features of Xamarin as a Cross-platform framework.pdfMost Useful features of Xamarin as a Cross-platform framework.pdf
Most Useful features of Xamarin as a Cross-platform framework.pdfMoon Technolabs Pvt. Ltd.
 
How To Hire A Team To Develop WebRTC Based Applications_.pdf
How To Hire A Team To Develop WebRTC Based Applications_.pdfHow To Hire A Team To Develop WebRTC Based Applications_.pdf
How To Hire A Team To Develop WebRTC Based Applications_.pdfMoon Technolabs Pvt. Ltd.
 

Similar to Xamarin MVP Approach: Code Sharing, Performance and Best Practices (20)

Why is xamarin the preferred app development platform among app developers
Why is xamarin the preferred app development platform among app developersWhy is xamarin the preferred app development platform among app developers
Why is xamarin the preferred app development platform among app developers
 
Xamarin vs. React Native Choosing the Right Software in 2023.pdf
Xamarin vs. React Native Choosing the Right Software in 2023.pdfXamarin vs. React Native Choosing the Right Software in 2023.pdf
Xamarin vs. React Native Choosing the Right Software in 2023.pdf
 
Xamarin vs. React Native Which Software Should You Choose in 2023.pdf
Xamarin vs. React Native Which Software Should You Choose in 2023.pdfXamarin vs. React Native Which Software Should You Choose in 2023.pdf
Xamarin vs. React Native Which Software Should You Choose in 2023.pdf
 
Why is xamarin the preferred app development platform among app developers
Why is xamarin the preferred app development platform among app developersWhy is xamarin the preferred app development platform among app developers
Why is xamarin the preferred app development platform among app developers
 
Why is xamarin the most popular framework for business app development
Why is xamarin the most popular framework for business app developmentWhy is xamarin the most popular framework for business app development
Why is xamarin the most popular framework for business app development
 
Xamarin vs. native script which one is the ideal cross-platform framework fo...
Xamarin vs. native script  which one is the ideal cross-platform framework fo...Xamarin vs. native script  which one is the ideal cross-platform framework fo...
Xamarin vs. native script which one is the ideal cross-platform framework fo...
 
Reason why app development company choose xamarin for cross platform
Reason why app development company choose xamarin for cross platformReason why app development company choose xamarin for cross platform
Reason why app development company choose xamarin for cross platform
 
Why Xamarin is the Best to Build Cost-Effective Mobile Apps
Why Xamarin is the Best to Build Cost-Effective Mobile AppsWhy Xamarin is the Best to Build Cost-Effective Mobile Apps
Why Xamarin is the Best to Build Cost-Effective Mobile Apps
 
Xamarin.forms vs. xamarin native how to choose the one you need
Xamarin.forms vs. xamarin native  how to choose the one you need Xamarin.forms vs. xamarin native  how to choose the one you need
Xamarin.forms vs. xamarin native how to choose the one you need
 
Xamarin. Forms vs. Xamarin Native_ How to choose_.pdf
Xamarin. Forms vs. Xamarin Native_ How to choose_.pdfXamarin. Forms vs. Xamarin Native_ How to choose_.pdf
Xamarin. Forms vs. Xamarin Native_ How to choose_.pdf
 
Top Reasons to Choose Xamarin for Mobile App Development in 2022
Top Reasons to Choose Xamarin for Mobile App Development in 2022Top Reasons to Choose Xamarin for Mobile App Development in 2022
Top Reasons to Choose Xamarin for Mobile App Development in 2022
 
Why Xamarin is the ideal choice for the app development company_.pdf
Why Xamarin is the ideal choice for the app development company_.pdfWhy Xamarin is the ideal choice for the app development company_.pdf
Why Xamarin is the ideal choice for the app development company_.pdf
 
Flutter vs Ionic vs React Native vs Xamarin - Which is best for Cross-Platfor...
Flutter vs Ionic vs React Native vs Xamarin - Which is best for Cross-Platfor...Flutter vs Ionic vs React Native vs Xamarin - Which is best for Cross-Platfor...
Flutter vs Ionic vs React Native vs Xamarin - Which is best for Cross-Platfor...
 
Why is xamarin app development important for your business
Why is xamarin app development important for your businessWhy is xamarin app development important for your business
Why is xamarin app development important for your business
 
Top 8 Alternatives Of Xamarin.pdf
Top 8 Alternatives Of Xamarin.pdfTop 8 Alternatives Of Xamarin.pdf
Top 8 Alternatives Of Xamarin.pdf
 
Why xamarin app development is growing for startups
Why xamarin app development is growing for startupsWhy xamarin app development is growing for startups
Why xamarin app development is growing for startups
 
Xamarin_ A Cross-Platform Framework with Top 6 Features.pdf
Xamarin_ A Cross-Platform Framework with Top 6 Features.pdfXamarin_ A Cross-Platform Framework with Top 6 Features.pdf
Xamarin_ A Cross-Platform Framework with Top 6 Features.pdf
 
Most Useful features of Xamarin as a Cross-platform framework.pdf
Most Useful features of Xamarin as a Cross-platform framework.pdfMost Useful features of Xamarin as a Cross-platform framework.pdf
Most Useful features of Xamarin as a Cross-platform framework.pdf
 
Lecture 08 Xamarin
Lecture 08 XamarinLecture 08 Xamarin
Lecture 08 Xamarin
 
How To Hire A Team To Develop WebRTC Based Applications_.pdf
How To Hire A Team To Develop WebRTC Based Applications_.pdfHow To Hire A Team To Develop WebRTC Based Applications_.pdf
How To Hire A Team To Develop WebRTC Based Applications_.pdf
 

More from Codemotion

Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Codemotion
 
Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyCodemotion
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaCodemotion
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserCodemotion
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Codemotion
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Codemotion
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Codemotion
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 - Codemotion
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Codemotion
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Codemotion
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Codemotion
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Codemotion
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Codemotion
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Codemotion
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Codemotion
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...Codemotion
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Codemotion
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Codemotion
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Codemotion
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Codemotion
 

More from Codemotion (20)

Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
 
Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending story
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storia
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard Altwasser
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
 

Recently uploaded

Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 

Recently uploaded (20)

Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 

Xamarin MVP Approach: Code Sharing, Performance and Best Practices

  • 1. Xamarin in real life: our MVP approach Antonino Cacace – Daniele Leombruni ROME - APRIL 13/14 2018
  • 2. { Who we are } What’s Xamarin Model View Presenter on Xamarin Dependency Injection Xamarin toolbox: must have libraries Why MVP Code sharing performance Size performance Startup performance The dark side of Xamarin
  • 3. Who we are Daniele Leombruni Mobile Architect for Mobile & Creative Technology at NTT Data. iOS developer since 2015 Xamarin developer since 2015 Antonino Cacace Mobile Architect for Mobile & Creative Technology at NTT Data. Android developer since 2012 Xamarin developer since 2015
  • 4. WeuseXamarin since2014 and in these yearswe haveimproved our developing processto obtain better performance and quality. Wedevelop apps for themost important customersinenergy, media, telco, manufactoring& retail sectors. Who we are
  • 5. Who we are { What’s Xamarin } Model View Presenter on Xamarin Dependency Injection Xamarin toolbox: must have libraries Why MVP Code sharing performance Size performance Startup performance The dark side of Xamarin
  • 6. What’s Xamarin Intro Mono Framework Open source development platform based on the .NET Framework, allows developers to build cross- platform applications Xamarin Compiler Compile C# code to IL or to ARM assembly code. Visual Studio Multi OS, powerfull IDE Xamarin.iOS and Xamarin Android Expose complete native SDKs for .NET developers
  • 7. • Xamarinisamobiledevelopmentplatformto build,testandmonitoring cross- platformapplicationsina fullynativemannerwith a singlecode base(known as “Shared Code”)and with a single programming language (C#). • ThemainXamarin’saim is to reusethe same shared code (about 40%) acrossdifferentplatformsreducing significantlyboth: • Developmentand Maintenancecosts • Time-to-market Xamarin apps have access to the full native spectrum of functionality exposed by the underlying platform and device. 100% SDK mapping. Native api access Native performance Native user interfaces Xamarin apps leverage platform-specific hardware acceleration, and are compiled for native performance Xamarin apps are built with standard, native user interface controls. What’s Xamarin Xamarin Native Shared C#App Logic Platform-specific C#Platform-specific C#
  • 8. CompilercompilesdowntoIntermediateLanguage (IL), which isthenJust-in-Time( JIT) compiled tonativeassembly whentheapplicationlaunches. Thereisalsoan experimentalversionof *AOT compilerforAndroid. Xamarin.iOS andXamarin.Android arebuilt on topofMono Ahead-of-Time( AOT)Compilercompiles Xamarin.iOS applicationsdirectlytonativeARM assemblycode. Mono AOT Code Mono IL JIT* What’s Xamarin What’s inside a Xamarin app
  • 9. Who we are What’s Xamarin { Model View Presenter on Xamarin } Dependency Injection Xamarin toolbox: must have libraries Why MVP Code sharing performance Size performance Startup performance The dark side of Xamarin
  • 10. BUSINESSLOGIC SharedCode (Platform indipendent) UI iOS/Android (Platform dipendent) MVP on Xamarin MVP Approach MODEL PRESENTER VIEW Our approach aims to maximize the reuse of code. In order to do so, we use Model View Presenter architecture implementing the model and the presenter in the shared code and the view in platform dependent code.
  • 11. *Or whateverView implementation(Fragment,Conductor, etc.) MVP on Xamarin Xamarin Implementation IPresenter INTERACTOR PRESENTER UIViewController *Activity SharedLibrary (Platformindipendent) iOS/Android (Platformdipendent) The backbones of the application are the contract interfaces. It’s essential to define it well from the beginning. IController
  • 12. Who we are What’s Xamarin Model View Presenter on Xamarin { Dependency Injection } Xamarin toolbox: must have libraries Why MVP Code sharing performance Size performance Startup performance The dark side of Xamarin
  • 13. Dependency Injection, based on the IoC (Inversion of Control) pattern, allows accessing platform specific features in Portable Class Library (PCL). Shared code depends on interfaces resolved in native code using a simple and lightweight dependency injection implementation. SERVICE CONTAINER Depencency Injection How SHARED CODE NATIVE CODE <RESOLVE> <REGISTER>
  • 14. Who we are What’s Xamarin Model View Presenter on Xamarin Dependency Injection { Xamarin Toolbox: must have libraries } Why MVP Code sharing performance Size performance Startup performance The dark side of Xamarin
  • 15. Refit .NET Standard 1.4 REST library Refit, a REST client library, that solves the problem of making API calls Xamarin Toolbox Must have libraries Rx.Net Reactive porting for .Net framework. Rx is a library for composing asynchronous, and event- based code with observables, and configuring it via LINQ. Conductor Fragment alternative for Android. Provide a framework that allows building view-based Android apps and thus completely avoiding the use of fragments. SharedC# AppLogic Platform-specificC#Platform-specificC# SharedC# AppLogic Platform-specificC#Platform-specificC# SharedC# AppLogic Platform-specificC#Platform-specificC#
  • 16.
  • 17. Who we are What’s Xamarin Model View Presenter on Xamarin Dependency Injection Xamarin toolbox: must have libraries { Why MVP } Code sharing performance Size performance Startup performance The dark side of Xamarin
  • 18. MODULARITY RESPONSABILITY XAMARIN CODE SHARING Using MVP keeps logic layer away from the graphic one: in addition each component is strongly cohesive, has a specific role and responsability; code is highly modular. This structure simplifies unit test phase: test design and execution are relative only to logic layer. Using Xamarin, where the logical layer is shared between platforms, increases the benefits of MVP by extending them to the development of apps for multiple platforms. Why MVP Benefits SIMPLIFY TESTING
  • 19. Who we are What’s Xamarin Model View Presenter on Xamarin Dependency Injection Xamarin toolbox: must have libraries Why MVP { Code sharing performance } Size performance Startup performance The dark side of Xamarin
  • 20. Code sharing performance Average shared code in real enterprise projects The statistics of code reuse on the Xamarin official site is around 40%. Using our MVP Approach, maximise the reuse of code of 25~30%. This range of values depends on the complexity of the app graphics. 7K 7K 8KRetail brand #2 Retail Brand #1 5K 12K 10K 18% SHARED iOS Android 14K 34K 29KEnergie brand #1 9K 11K 10K NOT MVP PA brand #1 5K 5K 9K OUR MVP PA brand #2 30% 11K 18K 17KEnergie brand #2 #of codelines 27K 77K 30K 19K 22K 46K
  • 21. Who we are What’s Xamarin Model View Presenter on Xamarin Dependency Injection Xamarin toolbox: must have libraries Why MVP Code sharing performance { Size performance } Startup performance The dark side of Xamarin
  • 22. Size performance Xamarin must incorporate monoruntime: this implies that the final dimensions of apk and ipa, in Xamarin environment, are greater than thesame builds in native one.
  • 23. XAMARIN FORMS ~ 15 Mb XAMARIN ANDROID ~ 5.5 MbANDROID NATIVE ~ 1 Mb Size performance Apk and ipa size XAMARIN FORMS ~ 10 Mb XAMARIN iOS ~ 6 MbIOS NATIVE ~ 2 Mb The graphics below show apk and ipa size of an «Hello world» project in native, Xamarin native, and Xamarin Forms environment using «Link Framework SDK Only».
  • 24. Size performance Linker Xamarin Linker is used in iOS and Android projects, to remove unused code from compiled assemblies. This helps reduce the final size of the apk or ipa. Linker has three options: None/Don’tLink,meansthelinkerwon’tdoanything SdkAssemblies Only/Link FrameworkSDKsOnly islimitedtobase classlibraries. Sdkand User Assemblies/Link Alliseverything,includingyourcode.
  • 25. Who we are What’s Xamarin Model View Presenter on Xamarin Dependency Injection Xamarin toolbox: must have libraries Why MVP Code sharing performance Size performance { Startup performance } The dark side of Xamarin
  • 26. Average startup time of an app on Android, Xamarin Android and Xamarin Forms Startup performance Average startup time on Android 310 ms 45 ms 150 ms 23 ms15 ms 80 ms
  • 27. Who we are What’s Xamarin Model View Presenter on Xamarin Dependency Injection Xamarin toolbox: must have libraries Why MVP Code sharing performance Size performance Startup performance { The dark side of Xamarin }
  • 28. The dark side of Xamarin Pros C# «One language to rule them all» C# is powerful and flexible, general-purpose, object- oriented programming language. You don’t need to know Swift, Java, Kotlin or ObjectiveC(thank god). Less code «Less is more» Less code mean less work, less bugs and less costs. Great performance «Fast as native» Xamarin app performance are almost like native app.
  • 29. Another layer of (possible) bugs. Hard to integrate some libraries (binding is not always easy). Visual Studio (for Mac) is (still) not mature Community not big as native communities. The dark side of Xamarin Cons

Editor's Notes

  1. Benvenuti Obiettivi dello speech
  2. Chi siamo Ho partecipato allo Xamarin Training nella sede Microsoft di Reading(UK)
  3. Mobile & Creative Tech Siamo Xamarin Partner
  4. Mono – Progetto open source lanciato nel 2001 per permettere di utilizzare il .NET framework su sistemi linux based Xamarin Compiler – Compila il codice C# in codice eseguibile da mono Visual Studio – Potente IDE Xam.ios e xam.and – porting sdk android e ios in c#
  5. Declinazioni di Xamarin -> Native/Forms Promesse di Xamarin {SPIEGARE LA PCL} {SPIEGARE TTM} {Considerate che quando escono le nuove version iOS e Android,vengono aggiornati in anteprima (fate un check)}
  6. Cosa c’è dentro un ipa o un apk Ios mono – codice compilato ahead of time Android – mono codice IL just in time
  7. Utilizzando Xamarin da molti anni e su svariati progetti, nel tempo siamo arrivati alla conclusione che il miglior modo di lavorare con questa tecnologia (almeno per noi e in base alla nostra esperienza) è utilizzare l’archittettura MVP.
  8. In questi anni di lavoro con Xamarin siamo giunti alla conclusione che il miglior modo di lavorare con Xamarin (per noi) è utilizzando l’archittettura MVP Cos’è MVP ->
  9. Come implementiamo l’MVP nella realtà.
  10. Una parte imprescindibile della nostra architettura è la «Dependency Injection» Attraverso la DI riusciamo ad implementare logiche specifiche della piattaforma nel codice condiviso. Utilizziamo un’implementazione leggera di DI. Registriamo le implementazioni all’interno del ServiceContainer nel codice nativo e possiamo risolverle nel codice condiviso.
  11. Xamarin ha un’ecosistema di libreria esterne abbastanza ampio accessibile tramite il package manager di .NET chiamato nuget.
  12. Refit -> Porting di Retrofit (famosa libreria android) per la gestione delle chiamate REST. Rx.Net -> Implementazione del pattern Reactive su C# che sfrutta anche la potenza di LINQ Conductor -> Libreria per Android che sostituisce I Fragment e le custom View. Porting fatto da noi. Conductor è una libreria leggera che permette di costruire applicazioni android View-Based. Conductor fornisce un wrapper alle View Android che ti permette di gestire il ciclo di vita in maniera complessa
  13. {imagine simpatic}
  14. Entrare sul progeweto piu velocemnete
  15. Ma vediamo le performance
  16. Linee di codice comuni mediante l’mvp fra 25% e 30% - prima 18% {46K con riuso 12K line in meno}
  17. Dimensioni di un app Hello World
  18. Startup di un app HelloWorld