SlideShare a Scribd company logo
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

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
Azilen Technologies Pvt. Ltd.
 
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.
 
Codename one
Codename oneCodename 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
FugenX
 
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 Applications
Kevin Whinnery
 
Cross-platform App Development Company
Cross-platform App Development CompanyCross-platform App Development Company
Cross-platform App Development Company
The NineHertz
 
Tcdnug xamarin
Tcdnug xamarinTcdnug xamarin
Tcdnug xamarin
Joe Koletar
 
Cross platform mobile application development
Cross platform mobile application developmentCross platform mobile application development
Cross platform mobile application development
webprogr.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 Browserify
Kevin Whinnery
 
Eclipse Way
Eclipse WayEclipse Way
Eclipse Way
Tomasz Zarna
 
New Dot Net SDK
New Dot Net SDKNew Dot Net SDK
New Dot Net SDK
readwritehack
 
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
Mounaim Latif
 
7 network programmability concepts api
7 network programmability concepts api7 network programmability concepts api
7 network programmability concepts api
SagarR24
 
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
Katy 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.0
Nam Le Quoc
 
Applix Appdoit Presentation
Applix Appdoit PresentationApplix Appdoit Presentation
Applix Appdoit Presentation
Applix 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 application
Loic Ortola
 
The Phonegap Architecture
The Phonegap ArchitectureThe Phonegap Architecture
The Phonegap Architecture
Frank 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 Studio
readwritehack
 

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 in real life: our MVP approach - Daniele Leombruni Antonino Cacace - Codemotion Rome 2018

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
Fullestop
 
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
Techugo
 
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
Techugo
 
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
Fullestop
 
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
Fullestop
 
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 platform
Aimore 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 Apps
Rosalie 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_.pdf
MoonTechnolabsPvtLtd
 
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
Edwardallen40
 
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
Moon 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 business
Fullestop
 
Top 8 Alternatives Of Xamarin.pdf
Top 8 Alternatives Of Xamarin.pdfTop 8 Alternatives Of Xamarin.pdf
Top 8 Alternatives Of Xamarin.pdf
Moon Technolabs Pvt. Ltd.
 
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
Marie 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.pdf
Moon 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.pdf
Moon Technolabs Pvt. Ltd.
 
Lecture 08 Xamarin
Lecture 08 XamarinLecture 08 Xamarin
Lecture 08 Xamarin
Maksym Davydov
 
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
Moon Technolabs Pvt. Ltd.
 

Similar to Xamarin in real life: our MVP approach - Daniele Leombruni Antonino Cacace - Codemotion Rome 2018 (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 story
Codemotion
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storia
Codemotion
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard Altwasser
Codemotion
 
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 2019
Codemotion
 
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
Codemotion
 
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 2019
Codemotion
 
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
Codemotion
 
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
Codemotion
 
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 2019
Codemotion
 
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
Codemotion
 
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
Codemotion
 

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

GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
Neo4j
 
"What does it really mean for your system to be available, or how to define w...
"What does it really mean for your system to be available, or how to define w..."What does it really mean for your system to be available, or how to define w...
"What does it really mean for your system to be available, or how to define w...
Fwdays
 
Day 2 - Intro to UiPath Studio Fundamentals
Day 2 - Intro to UiPath Studio FundamentalsDay 2 - Intro to UiPath Studio Fundamentals
Day 2 - Intro to UiPath Studio Fundamentals
UiPathCommunity
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
Antonios Katsarakis
 
Must Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during MigrationMust Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during Migration
Mydbops
 
Call Girls Chandigarh🔥7023059433🔥Agency Profile Escorts in Chandigarh Availab...
Call Girls Chandigarh🔥7023059433🔥Agency Profile Escorts in Chandigarh Availab...Call Girls Chandigarh🔥7023059433🔥Agency Profile Escorts in Chandigarh Availab...
Call Girls Chandigarh🔥7023059433🔥Agency Profile Escorts in Chandigarh Availab...
manji sharman06
 
Mutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented ChatbotsMutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented Chatbots
Pablo Gómez Abajo
 
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
GlobalLogic Ukraine
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
operationspcvita
 
Apps Break Data
Apps Break DataApps Break Data
Apps Break Data
Ivo Velitchkov
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
Fwdays
 
Lee Barnes - Path to Becoming an Effective Test Automation Engineer.pdf
Lee Barnes - Path to Becoming an Effective Test Automation Engineer.pdfLee Barnes - Path to Becoming an Effective Test Automation Engineer.pdf
Lee Barnes - Path to Becoming an Effective Test Automation Engineer.pdf
leebarnesutopia
 
What is an RPA CoE? Session 2 – CoE Roles
What is an RPA CoE?  Session 2 – CoE RolesWhat is an RPA CoE?  Session 2 – CoE Roles
What is an RPA CoE? Session 2 – CoE Roles
DianaGray10
 
"NATO Hackathon Winner: AI-Powered Drug Search", Taras Kloba
"NATO Hackathon Winner: AI-Powered Drug Search",  Taras Kloba"NATO Hackathon Winner: AI-Powered Drug Search",  Taras Kloba
"NATO Hackathon Winner: AI-Powered Drug Search", Taras Kloba
Fwdays
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
Ajin Abraham
 
What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
DianaGray10
 
Y-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PPY-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PP
c5vrf27qcz
 
Introducing BoxLang : A new JVM language for productivity and modularity!
Introducing BoxLang : A new JVM language for productivity and modularity!Introducing BoxLang : A new JVM language for productivity and modularity!
Introducing BoxLang : A new JVM language for productivity and modularity!
Ortus Solutions, Corp
 
Poznań ACE event - 19.06.2024 Team 24 Wrapup slidedeck
Poznań ACE event - 19.06.2024 Team 24 Wrapup slidedeckPoznań ACE event - 19.06.2024 Team 24 Wrapup slidedeck
Poznań ACE event - 19.06.2024 Team 24 Wrapup slidedeck
FilipTomaszewski5
 
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
"Scaling RAG Applications to serve millions of users",  Kevin Goedecke"Scaling RAG Applications to serve millions of users",  Kevin Goedecke
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
Fwdays
 

Recently uploaded (20)

GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
 
"What does it really mean for your system to be available, or how to define w...
"What does it really mean for your system to be available, or how to define w..."What does it really mean for your system to be available, or how to define w...
"What does it really mean for your system to be available, or how to define w...
 
Day 2 - Intro to UiPath Studio Fundamentals
Day 2 - Intro to UiPath Studio FundamentalsDay 2 - Intro to UiPath Studio Fundamentals
Day 2 - Intro to UiPath Studio Fundamentals
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
 
Must Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during MigrationMust Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during Migration
 
Call Girls Chandigarh🔥7023059433🔥Agency Profile Escorts in Chandigarh Availab...
Call Girls Chandigarh🔥7023059433🔥Agency Profile Escorts in Chandigarh Availab...Call Girls Chandigarh🔥7023059433🔥Agency Profile Escorts in Chandigarh Availab...
Call Girls Chandigarh🔥7023059433🔥Agency Profile Escorts in Chandigarh Availab...
 
Mutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented ChatbotsMutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented Chatbots
 
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
 
Apps Break Data
Apps Break DataApps Break Data
Apps Break Data
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
 
Lee Barnes - Path to Becoming an Effective Test Automation Engineer.pdf
Lee Barnes - Path to Becoming an Effective Test Automation Engineer.pdfLee Barnes - Path to Becoming an Effective Test Automation Engineer.pdf
Lee Barnes - Path to Becoming an Effective Test Automation Engineer.pdf
 
What is an RPA CoE? Session 2 – CoE Roles
What is an RPA CoE?  Session 2 – CoE RolesWhat is an RPA CoE?  Session 2 – CoE Roles
What is an RPA CoE? Session 2 – CoE Roles
 
"NATO Hackathon Winner: AI-Powered Drug Search", Taras Kloba
"NATO Hackathon Winner: AI-Powered Drug Search",  Taras Kloba"NATO Hackathon Winner: AI-Powered Drug Search",  Taras Kloba
"NATO Hackathon Winner: AI-Powered Drug Search", Taras Kloba
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
 
What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
 
Y-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PPY-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PP
 
Introducing BoxLang : A new JVM language for productivity and modularity!
Introducing BoxLang : A new JVM language for productivity and modularity!Introducing BoxLang : A new JVM language for productivity and modularity!
Introducing BoxLang : A new JVM language for productivity and modularity!
 
Poznań ACE event - 19.06.2024 Team 24 Wrapup slidedeck
Poznań ACE event - 19.06.2024 Team 24 Wrapup slidedeckPoznań ACE event - 19.06.2024 Team 24 Wrapup slidedeck
Poznań ACE event - 19.06.2024 Team 24 Wrapup slidedeck
 
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
"Scaling RAG Applications to serve millions of users",  Kevin Goedecke"Scaling RAG Applications to serve millions of users",  Kevin Goedecke
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
 

Xamarin in real life: our MVP approach - Daniele Leombruni Antonino Cacace - Codemotion Rome 2018

  • 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