SlideShare une entreprise Scribd logo
1  sur  35
Télécharger pour lire hors ligne
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
Xamarin - Under the Bridge
Microsoft&Xamarin MVP, Xamarin Certified Mobile Developer
CTO Mahiz S.r.l.
dan.ardelean@mahiz.it Twitter: @danardelean
Dan Ardelean
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
Many thanks to our sponsors & partners!
GOLD
SILVER
PARTNERS
PLATINUM
POWERED BY
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
XAMARIN
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
XAMARIN
C#/F#
Visual Studio
Xamarin Studio
Black Magic
Native
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
iOS Native Applications
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
iOS Native Application
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
DEMO XCODE
SINGLE VIEW APPLICATION
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
C# to Objective-C world
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
Xamarin iOS Compilation
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
• Expose Objectve-C to C# using Selectors
• objc_msgSend functions
Selectors
-[NSString sizeWithFont:forWidth:lineBreakMode:]
sizeWithFont Selector:
- (CGSize)sizeWithFont:(UIFont *)font forWidth:(CGFloat)width lineBreakMode:(UILineBreakMode)lineBreakMode
Objective-C declaration:
CGSize objc_msgSend(IntPtr target, IntPtr selector, IntPtr font, nfloat width, UILineBreakMode mode);
objc_msgSend
[DllImport (Constants.ObjectiveCLibrary,EntryPoint="objc_msgSend")]
static extern CGSize cgsize_objc_msgSend_IntPtr_float_int ( IntPtr target, IntPtr selector, IntPtr font, nfloat
width, UILineBreakMode mode);
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
• Expose Objectve-C to C# using Selectors
• objc_msgSend functions
Selectors
NSString target = ...
Selector selector = new Selector ("sizeWithFont:forWidth:lineBreakMode:");
UIFont font = ...
nfloat width = ...
UILineBreakMode mode = ...
CGSize size = cgsize_objc_msgSend_IntPtr_float_int( target.Handle, selector.Handle, font == null ? IntPtr.Zero :
font.Handle, width, mode);
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
• Expose Managed Code to Objective-C
Registrars
[Register]
class MyViewController : UIViewController{
[Export ("myFunc")]
public void MyFunc () { }
}
C# (Managed Code)
Objective-C
@interface MyViewController : UIViewController { }
-(void)myFunc;
@end
@implementation
MyViewController {}
-(void) myFunc
{ /* code to call the managed MyViewController.MyFunc method */
}
@end
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
DEMO XAMARIN IOS
Single View Application
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
Xamarin.iOS creates a managed wrapper, called a peer
object, for every native object accessed by the
Xamarin.iOS runtime
Peer wrapper objects
UIKit.UIButton
(peer object)
[UIButton]
(native object)IntPtrHandle
Allocated by
Xamarin.iOS
and collected by the
GC
Allocated by the iOS
runtime
and reference counted
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
• Peer object increment the retain count; it is released
when the managed peer is disposed or finalized
Memory allocation Xamarin.iOS
1
GC
Collect
[brelease] 0
b=null;
b.Dispose(); [brelease] 0
varb=newUIButton(...) [[UIButtonalloc]init]
…
or
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
Monitoring memory allocations
Memory
Analysis
(Heap shot)
Instrument
s
Androi
d
Device
Monito
r
Xamarin
Profiler
VS
Profiler
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
DEMO MEMORY ALLOCATION
Single View Application
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
✓Prefer full delegate methods over lambdas – it makes it
easier to see and understand strong references
✓Call Dispose() to release native resources immediately (vs.
waiting ona GC) when you are finished with a peer wrapper
✓Always unsubscribe from events you manually wire up;
alternatively, use the Storyboard to connect events which
can then be cleaned up automatically
Xamarin.iOS Tips
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
Android native application
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
Android Native Compilation
.dexfilesJava
compile
r
Android
dex
compiler
Java
bytecodes
Dalvik
bytecodes
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
Android Native Compilation
.dexfiles
Resources
(e.g.
images)
.apkfileAndroid
apkbuilde
r
The .apkfile contains
all the app's assets
and is ready to run
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
Android Native Execution
Bytecodes are compiled to
native code at installation
(called Ahead-of-Time or
AOT)
MyApp.apk
Android
Runtime
(ART)
Apps run in their own
process with their own
copy of the ART Virtual
Machine
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
DEMO ANDROID STUDIO
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
Xamarin.Android Architecture
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
Xamarin.Android Compilation
assemblyC#
compiler
IL and
metadata
Linke
r
Monoassemblies
yourassemblies
Monoassemblies
(filtered)
Determines which class members are used in
your app and includes only those members in
the output
yourassemblies
(filtered)
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
Xamarin.Android Compilation
Mono
Runtime
The Xamarin build tools
add the Mono VM to
your application
package
.apkfileAndroid
apkbuilde
r
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
DEMO XAMARIN.ANDROID
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
Xamarin.Android GC Process
GC
Collect
Can
collect
object?
Is Peer
Object
?
Yes Replace JNI
handle with
Weak Handle
Yes
Force Android GC
JNI
handle
collected
?
Collect object
No
Yes
Replace JNI
weak handle
with strong
handle reference
NoPeer
object
kept alive
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
• Integration between Xamarin GC and JVM GC is
performed through a native extension called the GC
Bridge
GC Bridge
Xamarin
Manage
d
Memory
Android
Manage
d
Memory
GC
Bridge
Process
Memor
y
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
• GC_ messages provide details about bridge and
collection times
Monitoring GC Performance
GC_MAJOR:(Minor allowance) pause 29.11ms, total 29.35ms, bridge 0.15msmajor
4048K/0K los 2766K/0K
Lower pause, bridge and total times are
preferred
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
• C# objects must be boxed to create a JVM
representation of the object; intrinsic types (strings,
numeric values and dates) are all special cased
Xamarin and the JAVA VM
C# Object
Java
Object
ArrayAdapter<Tweet>
ArrayAdapter
ArrayLis
tTweet Tweet Tweet Tweet
Tweet Tweet Tweet Tweet
ListView
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
• Instead, do as much as possible in either C# or Java,
interop is expensive
Stay in your yard
C# Object
Java
Object
TweetAdapter
List<Tweet>
Tweet Tweet Tweet Tweet
ListView
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
✓Should call Dispose() to release the native resources
immediately (vs waiting on a GC) when you are finished with
a peer wrapper
✓Avoid placing a large numbers of references in peer objects,
remember GC is more expensive for these special types
✓Avoid passing pure C# custom types into Java APIs if
possible
Xamarin.Android Tips
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
Xamarin
Process
Memory
UIView
UIImage
MKMapView
...
Activity
Intent
TextView
...
Managed
Memory
C# and .NET
objects are
allocated here
- this is all GC
knows about
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals
Q & A

Contenu connexe

Tendances

The Microsoft Cloud and Server Strategy - Ben Armstrong
The Microsoft Cloud and Server Strategy - Ben ArmstrongThe Microsoft Cloud and Server Strategy - Ben Armstrong
The Microsoft Cloud and Server Strategy - Ben ArmstrongITCamp
 
Blockchain for mere mortals - understand the fundamentals and start building ...
Blockchain for mere mortals - understand the fundamentals and start building ...Blockchain for mere mortals - understand the fundamentals and start building ...
Blockchain for mere mortals - understand the fundamentals and start building ...ITCamp
 
The best of Windows Server 2016 - Thomas Maurer
 The best of Windows Server 2016 - Thomas Maurer The best of Windows Server 2016 - Thomas Maurer
The best of Windows Server 2016 - Thomas MaurerITCamp
 
Migrating to Continuous Delivery with TFS 2017 - Liviu Mandras-Iura
 Migrating to Continuous Delivery with TFS 2017 - Liviu Mandras-Iura Migrating to Continuous Delivery with TFS 2017 - Liviu Mandras-Iura
Migrating to Continuous Delivery with TFS 2017 - Liviu Mandras-IuraITCamp
 
BUILD with Microsoft - Radu Stefan
 BUILD with Microsoft - Radu Stefan BUILD with Microsoft - Radu Stefan
BUILD with Microsoft - Radu StefanITCamp
 
Windows 10 Creators Update: what’s on tap for business users - Ionut Balan
Windows 10 Creators Update: what’s on tap for business users - Ionut BalanWindows 10 Creators Update: what’s on tap for business users - Ionut Balan
Windows 10 Creators Update: what’s on tap for business users - Ionut BalanITCamp
 
ITCamp 2017 - Laurent Ellerbach - Bot. You said bot? Let's build a bot then...
ITCamp 2017 - Laurent Ellerbach - Bot. You said bot? Let's build a bot then...ITCamp 2017 - Laurent Ellerbach - Bot. You said bot? Let's build a bot then...
ITCamp 2017 - Laurent Ellerbach - Bot. You said bot? Let's build a bot then...ITCamp
 
Everyone Loves Docker Containers Before They Understand Docker Containers - A...
Everyone Loves Docker Containers Before They Understand Docker Containers - A...Everyone Loves Docker Containers Before They Understand Docker Containers - A...
Everyone Loves Docker Containers Before They Understand Docker Containers - A...ITCamp
 
How to secure and manage modern IT - Ondrej Vysek
 How to secure and manage modern IT - Ondrej Vysek How to secure and manage modern IT - Ondrej Vysek
How to secure and manage modern IT - Ondrej VysekITCamp
 
ITCamp 2017 - Florin Coros - Decide between In-Process or Inter-Processes Com...
ITCamp 2017 - Florin Coros - Decide between In-Process or Inter-Processes Com...ITCamp 2017 - Florin Coros - Decide between In-Process or Inter-Processes Com...
ITCamp 2017 - Florin Coros - Decide between In-Process or Inter-Processes Com...ITCamp
 
From Developer to Data Scientist - Gaines Kergosien
From Developer to Data Scientist - Gaines KergosienFrom Developer to Data Scientist - Gaines Kergosien
From Developer to Data Scientist - Gaines KergosienITCamp
 
Modern cybersecurity threats, and shiny new tools to help deal with them - T...
 Modern cybersecurity threats, and shiny new tools to help deal with them - T... Modern cybersecurity threats, and shiny new tools to help deal with them - T...
Modern cybersecurity threats, and shiny new tools to help deal with them - T...ITCamp
 
Building and Managing your Virtual Datacenter using PowerShell DSC - Florin L...
Building and Managing your Virtual Datacenter using PowerShell DSC - Florin L...Building and Managing your Virtual Datacenter using PowerShell DSC - Florin L...
Building and Managing your Virtual Datacenter using PowerShell DSC - Florin L...ITCamp
 
The Fine Art of Time Travelling - Implementing Event Sourcing - Andrea Saltar...
The Fine Art of Time Travelling - Implementing Event Sourcing - Andrea Saltar...The Fine Art of Time Travelling - Implementing Event Sourcing - Andrea Saltar...
The Fine Art of Time Travelling - Implementing Event Sourcing - Andrea Saltar...ITCamp
 
Testing your PowerShell code with Pester - Florin Loghiade
Testing your PowerShell code with Pester - Florin LoghiadeTesting your PowerShell code with Pester - Florin Loghiade
Testing your PowerShell code with Pester - Florin LoghiadeITCamp
 
Developing PowerShell Tools - Razvan Rusu
Developing PowerShell Tools - Razvan RusuDeveloping PowerShell Tools - Razvan Rusu
Developing PowerShell Tools - Razvan RusuITCamp
 
Serverless Single Page Apps with React and Redux at ItCamp 2017
Serverless Single Page Apps with React and Redux at ItCamp 2017Serverless Single Page Apps with React and Redux at ItCamp 2017
Serverless Single Page Apps with React and Redux at ItCamp 2017Melania Andrisan (Danciu)
 
Serverless APIs with Apache OpenWhisk
Serverless APIs with Apache OpenWhiskServerless APIs with Apache OpenWhisk
Serverless APIs with Apache OpenWhiskDaniel Krook
 
#NoAgile - Dan Suciu
 #NoAgile - Dan Suciu #NoAgile - Dan Suciu
#NoAgile - Dan SuciuITCamp
 
What's New in Hyper-V 2016 - Thomas Maurer
What's New in Hyper-V 2016 - Thomas MaurerWhat's New in Hyper-V 2016 - Thomas Maurer
What's New in Hyper-V 2016 - Thomas MaurerITCamp
 

Tendances (20)

The Microsoft Cloud and Server Strategy - Ben Armstrong
The Microsoft Cloud and Server Strategy - Ben ArmstrongThe Microsoft Cloud and Server Strategy - Ben Armstrong
The Microsoft Cloud and Server Strategy - Ben Armstrong
 
Blockchain for mere mortals - understand the fundamentals and start building ...
Blockchain for mere mortals - understand the fundamentals and start building ...Blockchain for mere mortals - understand the fundamentals and start building ...
Blockchain for mere mortals - understand the fundamentals and start building ...
 
The best of Windows Server 2016 - Thomas Maurer
 The best of Windows Server 2016 - Thomas Maurer The best of Windows Server 2016 - Thomas Maurer
The best of Windows Server 2016 - Thomas Maurer
 
Migrating to Continuous Delivery with TFS 2017 - Liviu Mandras-Iura
 Migrating to Continuous Delivery with TFS 2017 - Liviu Mandras-Iura Migrating to Continuous Delivery with TFS 2017 - Liviu Mandras-Iura
Migrating to Continuous Delivery with TFS 2017 - Liviu Mandras-Iura
 
BUILD with Microsoft - Radu Stefan
 BUILD with Microsoft - Radu Stefan BUILD with Microsoft - Radu Stefan
BUILD with Microsoft - Radu Stefan
 
Windows 10 Creators Update: what’s on tap for business users - Ionut Balan
Windows 10 Creators Update: what’s on tap for business users - Ionut BalanWindows 10 Creators Update: what’s on tap for business users - Ionut Balan
Windows 10 Creators Update: what’s on tap for business users - Ionut Balan
 
ITCamp 2017 - Laurent Ellerbach - Bot. You said bot? Let's build a bot then...
ITCamp 2017 - Laurent Ellerbach - Bot. You said bot? Let's build a bot then...ITCamp 2017 - Laurent Ellerbach - Bot. You said bot? Let's build a bot then...
ITCamp 2017 - Laurent Ellerbach - Bot. You said bot? Let's build a bot then...
 
Everyone Loves Docker Containers Before They Understand Docker Containers - A...
Everyone Loves Docker Containers Before They Understand Docker Containers - A...Everyone Loves Docker Containers Before They Understand Docker Containers - A...
Everyone Loves Docker Containers Before They Understand Docker Containers - A...
 
How to secure and manage modern IT - Ondrej Vysek
 How to secure and manage modern IT - Ondrej Vysek How to secure and manage modern IT - Ondrej Vysek
How to secure and manage modern IT - Ondrej Vysek
 
ITCamp 2017 - Florin Coros - Decide between In-Process or Inter-Processes Com...
ITCamp 2017 - Florin Coros - Decide between In-Process or Inter-Processes Com...ITCamp 2017 - Florin Coros - Decide between In-Process or Inter-Processes Com...
ITCamp 2017 - Florin Coros - Decide between In-Process or Inter-Processes Com...
 
From Developer to Data Scientist - Gaines Kergosien
From Developer to Data Scientist - Gaines KergosienFrom Developer to Data Scientist - Gaines Kergosien
From Developer to Data Scientist - Gaines Kergosien
 
Modern cybersecurity threats, and shiny new tools to help deal with them - T...
 Modern cybersecurity threats, and shiny new tools to help deal with them - T... Modern cybersecurity threats, and shiny new tools to help deal with them - T...
Modern cybersecurity threats, and shiny new tools to help deal with them - T...
 
Building and Managing your Virtual Datacenter using PowerShell DSC - Florin L...
Building and Managing your Virtual Datacenter using PowerShell DSC - Florin L...Building and Managing your Virtual Datacenter using PowerShell DSC - Florin L...
Building and Managing your Virtual Datacenter using PowerShell DSC - Florin L...
 
The Fine Art of Time Travelling - Implementing Event Sourcing - Andrea Saltar...
The Fine Art of Time Travelling - Implementing Event Sourcing - Andrea Saltar...The Fine Art of Time Travelling - Implementing Event Sourcing - Andrea Saltar...
The Fine Art of Time Travelling - Implementing Event Sourcing - Andrea Saltar...
 
Testing your PowerShell code with Pester - Florin Loghiade
Testing your PowerShell code with Pester - Florin LoghiadeTesting your PowerShell code with Pester - Florin Loghiade
Testing your PowerShell code with Pester - Florin Loghiade
 
Developing PowerShell Tools - Razvan Rusu
Developing PowerShell Tools - Razvan RusuDeveloping PowerShell Tools - Razvan Rusu
Developing PowerShell Tools - Razvan Rusu
 
Serverless Single Page Apps with React and Redux at ItCamp 2017
Serverless Single Page Apps with React and Redux at ItCamp 2017Serverless Single Page Apps with React and Redux at ItCamp 2017
Serverless Single Page Apps with React and Redux at ItCamp 2017
 
Serverless APIs with Apache OpenWhisk
Serverless APIs with Apache OpenWhiskServerless APIs with Apache OpenWhisk
Serverless APIs with Apache OpenWhisk
 
#NoAgile - Dan Suciu
 #NoAgile - Dan Suciu #NoAgile - Dan Suciu
#NoAgile - Dan Suciu
 
What's New in Hyper-V 2016 - Thomas Maurer
What's New in Hyper-V 2016 - Thomas MaurerWhat's New in Hyper-V 2016 - Thomas Maurer
What's New in Hyper-V 2016 - Thomas Maurer
 

En vedette

ITCamp 2017 - Ciprian Sorlea - Fostering Heroes
ITCamp 2017 - Ciprian Sorlea - Fostering HeroesITCamp 2017 - Ciprian Sorlea - Fostering Heroes
ITCamp 2017 - Ciprian Sorlea - Fostering HeroesITCamp
 
Storage Spaces Direct - the new Microsoft SDS star - Carsten Rachfahl
Storage Spaces Direct - the new Microsoft SDS star - Carsten RachfahlStorage Spaces Direct - the new Microsoft SDS star - Carsten Rachfahl
Storage Spaces Direct - the new Microsoft SDS star - Carsten RachfahlITCamp
 
7 Habits of Highly Paid Developers - Gaines Kergosien
7 Habits of Highly Paid Developers - Gaines Kergosien7 Habits of Highly Paid Developers - Gaines Kergosien
7 Habits of Highly Paid Developers - Gaines KergosienITCamp
 
Assembly of Japanese bicycle requires peace of mind - Peter Leeson
 Assembly of Japanese bicycle requires peace of mind - Peter Leeson Assembly of Japanese bicycle requires peace of mind - Peter Leeson
Assembly of Japanese bicycle requires peace of mind - Peter LeesonITCamp
 
Strategies for securing your banks & enterprises (from someone who robs bank...
 Strategies for securing your banks & enterprises (from someone who robs bank... Strategies for securing your banks & enterprises (from someone who robs bank...
Strategies for securing your banks & enterprises (from someone who robs bank...ITCamp
 
How to Start-up a Start-up - Mihail Rotenberg
 How to Start-up a Start-up - Mihail Rotenberg How to Start-up a Start-up - Mihail Rotenberg
How to Start-up a Start-up - Mihail RotenbergITCamp
 
Building Powerful Applications with AngularJS 2 and TypeScript - David Giard
Building Powerful Applications with AngularJS 2 and TypeScript - David GiardBuilding Powerful Applications with AngularJS 2 and TypeScript - David Giard
Building Powerful Applications with AngularJS 2 and TypeScript - David GiardITCamp
 
Big Data Solutions in Azure - David Giard
Big Data Solutions in Azure - David GiardBig Data Solutions in Azure - David Giard
Big Data Solutions in Azure - David GiardITCamp
 
Great all this new stuff, but how do I convince my management - Erwin Derksen
 Great all this new stuff, but how do I convince my management - Erwin Derksen Great all this new stuff, but how do I convince my management - Erwin Derksen
Great all this new stuff, but how do I convince my management - Erwin DerksenITCamp
 
Columnstore indexes - best practices for the ETL process - Damian Widera
Columnstore indexes - best practices for the ETL process - Damian WideraColumnstore indexes - best practices for the ETL process - Damian Widera
Columnstore indexes - best practices for the ETL process - Damian WideraITCamp
 
One Azure Monitor to Rule Them All? (IT Camp 2017, Cluj, RO)
One Azure Monitor to Rule Them All? (IT Camp 2017, Cluj, RO)One Azure Monitor to Rule Them All? (IT Camp 2017, Cluj, RO)
One Azure Monitor to Rule Them All? (IT Camp 2017, Cluj, RO)Marius Zaharia
 

En vedette (11)

ITCamp 2017 - Ciprian Sorlea - Fostering Heroes
ITCamp 2017 - Ciprian Sorlea - Fostering HeroesITCamp 2017 - Ciprian Sorlea - Fostering Heroes
ITCamp 2017 - Ciprian Sorlea - Fostering Heroes
 
Storage Spaces Direct - the new Microsoft SDS star - Carsten Rachfahl
Storage Spaces Direct - the new Microsoft SDS star - Carsten RachfahlStorage Spaces Direct - the new Microsoft SDS star - Carsten Rachfahl
Storage Spaces Direct - the new Microsoft SDS star - Carsten Rachfahl
 
7 Habits of Highly Paid Developers - Gaines Kergosien
7 Habits of Highly Paid Developers - Gaines Kergosien7 Habits of Highly Paid Developers - Gaines Kergosien
7 Habits of Highly Paid Developers - Gaines Kergosien
 
Assembly of Japanese bicycle requires peace of mind - Peter Leeson
 Assembly of Japanese bicycle requires peace of mind - Peter Leeson Assembly of Japanese bicycle requires peace of mind - Peter Leeson
Assembly of Japanese bicycle requires peace of mind - Peter Leeson
 
Strategies for securing your banks & enterprises (from someone who robs bank...
 Strategies for securing your banks & enterprises (from someone who robs bank... Strategies for securing your banks & enterprises (from someone who robs bank...
Strategies for securing your banks & enterprises (from someone who robs bank...
 
How to Start-up a Start-up - Mihail Rotenberg
 How to Start-up a Start-up - Mihail Rotenberg How to Start-up a Start-up - Mihail Rotenberg
How to Start-up a Start-up - Mihail Rotenberg
 
Building Powerful Applications with AngularJS 2 and TypeScript - David Giard
Building Powerful Applications with AngularJS 2 and TypeScript - David GiardBuilding Powerful Applications with AngularJS 2 and TypeScript - David Giard
Building Powerful Applications with AngularJS 2 and TypeScript - David Giard
 
Big Data Solutions in Azure - David Giard
Big Data Solutions in Azure - David GiardBig Data Solutions in Azure - David Giard
Big Data Solutions in Azure - David Giard
 
Great all this new stuff, but how do I convince my management - Erwin Derksen
 Great all this new stuff, but how do I convince my management - Erwin Derksen Great all this new stuff, but how do I convince my management - Erwin Derksen
Great all this new stuff, but how do I convince my management - Erwin Derksen
 
Columnstore indexes - best practices for the ETL process - Damian Widera
Columnstore indexes - best practices for the ETL process - Damian WideraColumnstore indexes - best practices for the ETL process - Damian Widera
Columnstore indexes - best practices for the ETL process - Damian Widera
 
One Azure Monitor to Rule Them All? (IT Camp 2017, Cluj, RO)
One Azure Monitor to Rule Them All? (IT Camp 2017, Cluj, RO)One Azure Monitor to Rule Them All? (IT Camp 2017, Cluj, RO)
One Azure Monitor to Rule Them All? (IT Camp 2017, Cluj, RO)
 

Similaire à Xamarin Under The Hood - Dan Ardelean

ITCamp 2018 - Dan Ardelean - CI/CD for mobile development using Visual Studio...
ITCamp 2018 - Dan Ardelean - CI/CD for mobile development using Visual Studio...ITCamp 2018 - Dan Ardelean - CI/CD for mobile development using Visual Studio...
ITCamp 2018 - Dan Ardelean - CI/CD for mobile development using Visual Studio...ITCamp
 
CI/CD for mobile development using Visual Studio App Center
CI/CD for mobile development using Visual Studio App CenterCI/CD for mobile development using Visual Studio App Center
CI/CD for mobile development using Visual Studio App CenterDan Ardelean
 
ITCamp 2019 - Andrea Saltarello - Modernise your app. The Cloud Story
ITCamp 2019 - Andrea Saltarello - Modernise your app. The Cloud StoryITCamp 2019 - Andrea Saltarello - Modernise your app. The Cloud Story
ITCamp 2019 - Andrea Saltarello - Modernise your app. The Cloud StoryITCamp
 
Azure Microservices in Practice - Radu Vunvulea
Azure Microservices in Practice - Radu VunvuleaAzure Microservices in Practice - Radu Vunvulea
Azure Microservices in Practice - Radu VunvuleaITCamp
 
ITCamp 2019 - Emil Craciun - RoboRestaurant of the future powered by serverle...
ITCamp 2019 - Emil Craciun - RoboRestaurant of the future powered by serverle...ITCamp 2019 - Emil Craciun - RoboRestaurant of the future powered by serverle...
ITCamp 2019 - Emil Craciun - RoboRestaurant of the future powered by serverle...ITCamp
 
Azure Microservices in Practice, Radu Vunvulea, ITCamp 2016
Azure Microservices in Practice, Radu Vunvulea, ITCamp 2016Azure Microservices in Practice, Radu Vunvulea, ITCamp 2016
Azure Microservices in Practice, Radu Vunvulea, ITCamp 2016Radu Vunvulea
 
ITCamp 2019 - Andrea Saltarello - Implementing bots and Alexa skills using Az...
ITCamp 2019 - Andrea Saltarello - Implementing bots and Alexa skills using Az...ITCamp 2019 - Andrea Saltarello - Implementing bots and Alexa skills using Az...
ITCamp 2019 - Andrea Saltarello - Implementing bots and Alexa skills using Az...ITCamp
 
ITCamp 2018 - Florin Coros - ‘Cloud Ready’ Design through Application Softwar...
ITCamp 2018 - Florin Coros - ‘Cloud Ready’ Design through Application Softwar...ITCamp 2018 - Florin Coros - ‘Cloud Ready’ Design through Application Softwar...
ITCamp 2018 - Florin Coros - ‘Cloud Ready’ Design through Application Softwar...ITCamp
 
‘Cloud Ready’ Design through Application Software Infrastructure
‘Cloud Ready’ Design through Application Software Infrastructure‘Cloud Ready’ Design through Application Software Infrastructure
‘Cloud Ready’ Design through Application Software InfrastructureFlorin Coros
 
Azure SQL Database From A Developer's Perspective - Alex Mang
Azure SQL Database From A Developer's Perspective - Alex MangAzure SQL Database From A Developer's Perspective - Alex Mang
Azure SQL Database From A Developer's Perspective - Alex MangITCamp
 
How # (sharp) is Your Katana (Ciprian Jichici)
How # (sharp) is Your Katana (Ciprian Jichici)How # (sharp) is Your Katana (Ciprian Jichici)
How # (sharp) is Your Katana (Ciprian Jichici)ITCamp
 
ITCamp 2013 - Petru Jucovschi - Application ecosystems
ITCamp 2013 - Petru Jucovschi - Application ecosystemsITCamp 2013 - Petru Jucovschi - Application ecosystems
ITCamp 2013 - Petru Jucovschi - Application ecosystemsITCamp
 
ITCamp 2013 - Lorant Domokos - Chasing the one codebase, multiple platforms d...
ITCamp 2013 - Lorant Domokos - Chasing the one codebase, multiple platforms d...ITCamp 2013 - Lorant Domokos - Chasing the one codebase, multiple platforms d...
ITCamp 2013 - Lorant Domokos - Chasing the one codebase, multiple platforms d...ITCamp
 
ITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep dive
ITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep diveITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep dive
ITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep diveITCamp
 
A new world of possibilities for contextual awareness with beacons - Dan Arde...
A new world of possibilities for contextual awareness with beacons - Dan Arde...A new world of possibilities for contextual awareness with beacons - Dan Arde...
A new world of possibilities for contextual awareness with beacons - Dan Arde...ITCamp
 
ITCamp 2019 - Florin Coros - Implementing Clean Architecture
ITCamp 2019 - Florin Coros - Implementing Clean ArchitectureITCamp 2019 - Florin Coros - Implementing Clean Architecture
ITCamp 2019 - Florin Coros - Implementing Clean ArchitectureITCamp
 
Implementing Clean Architecture
Implementing Clean ArchitectureImplementing Clean Architecture
Implementing Clean ArchitectureFlorin Coros
 
A new world of possibilities for contextual awareness with beacons
A new world of possibilities for contextual awareness with beaconsA new world of possibilities for contextual awareness with beacons
A new world of possibilities for contextual awareness with beaconsDan Ardelean
 
ITCamp 2018 - Ionut Balan - A beginner’s guide to Windows Mixed Reality
ITCamp 2018 - Ionut Balan - A beginner’s guide to Windows Mixed RealityITCamp 2018 - Ionut Balan - A beginner’s guide to Windows Mixed Reality
ITCamp 2018 - Ionut Balan - A beginner’s guide to Windows Mixed RealityITCamp
 
ITCamp 2019 - Mihai Tataran - Governing your Cloud Resources
ITCamp 2019 - Mihai Tataran - Governing your Cloud ResourcesITCamp 2019 - Mihai Tataran - Governing your Cloud Resources
ITCamp 2019 - Mihai Tataran - Governing your Cloud ResourcesITCamp
 

Similaire à Xamarin Under The Hood - Dan Ardelean (20)

ITCamp 2018 - Dan Ardelean - CI/CD for mobile development using Visual Studio...
ITCamp 2018 - Dan Ardelean - CI/CD for mobile development using Visual Studio...ITCamp 2018 - Dan Ardelean - CI/CD for mobile development using Visual Studio...
ITCamp 2018 - Dan Ardelean - CI/CD for mobile development using Visual Studio...
 
CI/CD for mobile development using Visual Studio App Center
CI/CD for mobile development using Visual Studio App CenterCI/CD for mobile development using Visual Studio App Center
CI/CD for mobile development using Visual Studio App Center
 
ITCamp 2019 - Andrea Saltarello - Modernise your app. The Cloud Story
ITCamp 2019 - Andrea Saltarello - Modernise your app. The Cloud StoryITCamp 2019 - Andrea Saltarello - Modernise your app. The Cloud Story
ITCamp 2019 - Andrea Saltarello - Modernise your app. The Cloud Story
 
Azure Microservices in Practice - Radu Vunvulea
Azure Microservices in Practice - Radu VunvuleaAzure Microservices in Practice - Radu Vunvulea
Azure Microservices in Practice - Radu Vunvulea
 
ITCamp 2019 - Emil Craciun - RoboRestaurant of the future powered by serverle...
ITCamp 2019 - Emil Craciun - RoboRestaurant of the future powered by serverle...ITCamp 2019 - Emil Craciun - RoboRestaurant of the future powered by serverle...
ITCamp 2019 - Emil Craciun - RoboRestaurant of the future powered by serverle...
 
Azure Microservices in Practice, Radu Vunvulea, ITCamp 2016
Azure Microservices in Practice, Radu Vunvulea, ITCamp 2016Azure Microservices in Practice, Radu Vunvulea, ITCamp 2016
Azure Microservices in Practice, Radu Vunvulea, ITCamp 2016
 
ITCamp 2019 - Andrea Saltarello - Implementing bots and Alexa skills using Az...
ITCamp 2019 - Andrea Saltarello - Implementing bots and Alexa skills using Az...ITCamp 2019 - Andrea Saltarello - Implementing bots and Alexa skills using Az...
ITCamp 2019 - Andrea Saltarello - Implementing bots and Alexa skills using Az...
 
ITCamp 2018 - Florin Coros - ‘Cloud Ready’ Design through Application Softwar...
ITCamp 2018 - Florin Coros - ‘Cloud Ready’ Design through Application Softwar...ITCamp 2018 - Florin Coros - ‘Cloud Ready’ Design through Application Softwar...
ITCamp 2018 - Florin Coros - ‘Cloud Ready’ Design through Application Softwar...
 
‘Cloud Ready’ Design through Application Software Infrastructure
‘Cloud Ready’ Design through Application Software Infrastructure‘Cloud Ready’ Design through Application Software Infrastructure
‘Cloud Ready’ Design through Application Software Infrastructure
 
Azure SQL Database From A Developer's Perspective - Alex Mang
Azure SQL Database From A Developer's Perspective - Alex MangAzure SQL Database From A Developer's Perspective - Alex Mang
Azure SQL Database From A Developer's Perspective - Alex Mang
 
How # (sharp) is Your Katana (Ciprian Jichici)
How # (sharp) is Your Katana (Ciprian Jichici)How # (sharp) is Your Katana (Ciprian Jichici)
How # (sharp) is Your Katana (Ciprian Jichici)
 
ITCamp 2013 - Petru Jucovschi - Application ecosystems
ITCamp 2013 - Petru Jucovschi - Application ecosystemsITCamp 2013 - Petru Jucovschi - Application ecosystems
ITCamp 2013 - Petru Jucovschi - Application ecosystems
 
ITCamp 2013 - Lorant Domokos - Chasing the one codebase, multiple platforms d...
ITCamp 2013 - Lorant Domokos - Chasing the one codebase, multiple platforms d...ITCamp 2013 - Lorant Domokos - Chasing the one codebase, multiple platforms d...
ITCamp 2013 - Lorant Domokos - Chasing the one codebase, multiple platforms d...
 
ITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep dive
ITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep diveITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep dive
ITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep dive
 
A new world of possibilities for contextual awareness with beacons - Dan Arde...
A new world of possibilities for contextual awareness with beacons - Dan Arde...A new world of possibilities for contextual awareness with beacons - Dan Arde...
A new world of possibilities for contextual awareness with beacons - Dan Arde...
 
ITCamp 2019 - Florin Coros - Implementing Clean Architecture
ITCamp 2019 - Florin Coros - Implementing Clean ArchitectureITCamp 2019 - Florin Coros - Implementing Clean Architecture
ITCamp 2019 - Florin Coros - Implementing Clean Architecture
 
Implementing Clean Architecture
Implementing Clean ArchitectureImplementing Clean Architecture
Implementing Clean Architecture
 
A new world of possibilities for contextual awareness with beacons
A new world of possibilities for contextual awareness with beaconsA new world of possibilities for contextual awareness with beacons
A new world of possibilities for contextual awareness with beacons
 
ITCamp 2018 - Ionut Balan - A beginner’s guide to Windows Mixed Reality
ITCamp 2018 - Ionut Balan - A beginner’s guide to Windows Mixed RealityITCamp 2018 - Ionut Balan - A beginner’s guide to Windows Mixed Reality
ITCamp 2018 - Ionut Balan - A beginner’s guide to Windows Mixed Reality
 
ITCamp 2019 - Mihai Tataran - Governing your Cloud Resources
ITCamp 2019 - Mihai Tataran - Governing your Cloud ResourcesITCamp 2019 - Mihai Tataran - Governing your Cloud Resources
ITCamp 2019 - Mihai Tataran - Governing your Cloud Resources
 

Plus de ITCamp

ITCamp 2019 - Stacey M. Jenkins - Protecting your company's data - By psychol...
ITCamp 2019 - Stacey M. Jenkins - Protecting your company's data - By psychol...ITCamp 2019 - Stacey M. Jenkins - Protecting your company's data - By psychol...
ITCamp 2019 - Stacey M. Jenkins - Protecting your company's data - By psychol...ITCamp
 
ITCamp 2019 - Silviu Niculita - Supercharge your AI efforts with the use of A...
ITCamp 2019 - Silviu Niculita - Supercharge your AI efforts with the use of A...ITCamp 2019 - Silviu Niculita - Supercharge your AI efforts with the use of A...
ITCamp 2019 - Silviu Niculita - Supercharge your AI efforts with the use of A...ITCamp
 
ITCamp 2019 - Peter Leeson - Managing Skills
ITCamp 2019 - Peter Leeson - Managing SkillsITCamp 2019 - Peter Leeson - Managing Skills
ITCamp 2019 - Peter Leeson - Managing SkillsITCamp
 
ITCamp 2019 - Ivana Milicic - Color - The Shadow Ruler of UX
ITCamp 2019 - Ivana Milicic - Color - The Shadow Ruler of UXITCamp 2019 - Ivana Milicic - Color - The Shadow Ruler of UX
ITCamp 2019 - Ivana Milicic - Color - The Shadow Ruler of UXITCamp
 
ITCamp 2019 - Florin Loghiade - Azure Kubernetes in Production - Field notes...
ITCamp 2019 - Florin Loghiade -  Azure Kubernetes in Production - Field notes...ITCamp 2019 - Florin Loghiade -  Azure Kubernetes in Production - Field notes...
ITCamp 2019 - Florin Loghiade - Azure Kubernetes in Production - Field notes...ITCamp
 
ITCamp 2019 - Florin Flestea - How 3rd Level support experience influenced m...
ITCamp 2019 - Florin Flestea -  How 3rd Level support experience influenced m...ITCamp 2019 - Florin Flestea -  How 3rd Level support experience influenced m...
ITCamp 2019 - Florin Flestea - How 3rd Level support experience influenced m...ITCamp
 
ITCamp 2019 - Eldert Grootenboer - Cloud Architecture Recipes for The Enterprise
ITCamp 2019 - Eldert Grootenboer - Cloud Architecture Recipes for The EnterpriseITCamp 2019 - Eldert Grootenboer - Cloud Architecture Recipes for The Enterprise
ITCamp 2019 - Eldert Grootenboer - Cloud Architecture Recipes for The EnterpriseITCamp
 
ITCamp 2019 - Cristiana Fernbach - Blockchain Legal Trends
ITCamp 2019 - Cristiana Fernbach - Blockchain Legal TrendsITCamp 2019 - Cristiana Fernbach - Blockchain Legal Trends
ITCamp 2019 - Cristiana Fernbach - Blockchain Legal TrendsITCamp
 
ITCamp 2019 - Andy Cross - Machine Learning with ML.NET and Azure Data Lake
ITCamp 2019 - Andy Cross - Machine Learning with ML.NET and Azure Data LakeITCamp 2019 - Andy Cross - Machine Learning with ML.NET and Azure Data Lake
ITCamp 2019 - Andy Cross - Machine Learning with ML.NET and Azure Data LakeITCamp
 
ITCamp 2019 - Andy Cross - Business Outcomes from AI
ITCamp 2019 - Andy Cross - Business Outcomes from AIITCamp 2019 - Andy Cross - Business Outcomes from AI
ITCamp 2019 - Andy Cross - Business Outcomes from AIITCamp
 
ITCamp 2019 - Alex Mang - I'm Confused Should I Orchestrate my Containers on ...
ITCamp 2019 - Alex Mang - I'm Confused Should I Orchestrate my Containers on ...ITCamp 2019 - Alex Mang - I'm Confused Should I Orchestrate my Containers on ...
ITCamp 2019 - Alex Mang - I'm Confused Should I Orchestrate my Containers on ...ITCamp
 
ITCamp 2019 - Alex Mang - How Far Can Serverless Actually Go Now
ITCamp 2019 - Alex Mang - How Far Can Serverless Actually Go NowITCamp 2019 - Alex Mang - How Far Can Serverless Actually Go Now
ITCamp 2019 - Alex Mang - How Far Can Serverless Actually Go NowITCamp
 
ITCamp 2019 - Peter Leeson - Vitruvian Quality
ITCamp 2019 - Peter Leeson - Vitruvian QualityITCamp 2019 - Peter Leeson - Vitruvian Quality
ITCamp 2019 - Peter Leeson - Vitruvian QualityITCamp
 
ITCamp 2018 - Ciprian Sorlea - Million Dollars Hello World Application
ITCamp 2018 - Ciprian Sorlea - Million Dollars Hello World ApplicationITCamp 2018 - Ciprian Sorlea - Million Dollars Hello World Application
ITCamp 2018 - Ciprian Sorlea - Million Dollars Hello World ApplicationITCamp
 
ITCamp 2018 - Ciprian Sorlea - Enterprise Architectures with TypeScript And F...
ITCamp 2018 - Ciprian Sorlea - Enterprise Architectures with TypeScript And F...ITCamp 2018 - Ciprian Sorlea - Enterprise Architectures with TypeScript And F...
ITCamp 2018 - Ciprian Sorlea - Enterprise Architectures with TypeScript And F...ITCamp
 
ITCamp 2018 - Mete Atamel Ian Talarico - Google Home meets .NET containers on...
ITCamp 2018 - Mete Atamel Ian Talarico - Google Home meets .NET containers on...ITCamp 2018 - Mete Atamel Ian Talarico - Google Home meets .NET containers on...
ITCamp 2018 - Mete Atamel Ian Talarico - Google Home meets .NET containers on...ITCamp
 
ITCamp 2018 - Magnus Mårtensson - Azure Global Application Perspectives
ITCamp 2018 - Magnus Mårtensson - Azure Global Application PerspectivesITCamp 2018 - Magnus Mårtensson - Azure Global Application Perspectives
ITCamp 2018 - Magnus Mårtensson - Azure Global Application PerspectivesITCamp
 
ITCamp 2018 - Magnus Mårtensson - Azure Resource Manager For The Win
ITCamp 2018 - Magnus Mårtensson - Azure Resource Manager For The WinITCamp 2018 - Magnus Mårtensson - Azure Resource Manager For The Win
ITCamp 2018 - Magnus Mårtensson - Azure Resource Manager For The WinITCamp
 
ITCamp 2018 - Cristiana Fernbach - GDPR compliance in the industry 4.0
ITCamp 2018 - Cristiana Fernbach - GDPR compliance in the industry 4.0ITCamp 2018 - Cristiana Fernbach - GDPR compliance in the industry 4.0
ITCamp 2018 - Cristiana Fernbach - GDPR compliance in the industry 4.0ITCamp
 
ITCamp 2018 - Andrea Martorana Tusa - Writing queries in SQL Server 2016-2017
ITCamp 2018 - Andrea Martorana Tusa - Writing queries in SQL Server 2016-2017ITCamp 2018 - Andrea Martorana Tusa - Writing queries in SQL Server 2016-2017
ITCamp 2018 - Andrea Martorana Tusa - Writing queries in SQL Server 2016-2017ITCamp
 

Plus de ITCamp (20)

ITCamp 2019 - Stacey M. Jenkins - Protecting your company's data - By psychol...
ITCamp 2019 - Stacey M. Jenkins - Protecting your company's data - By psychol...ITCamp 2019 - Stacey M. Jenkins - Protecting your company's data - By psychol...
ITCamp 2019 - Stacey M. Jenkins - Protecting your company's data - By psychol...
 
ITCamp 2019 - Silviu Niculita - Supercharge your AI efforts with the use of A...
ITCamp 2019 - Silviu Niculita - Supercharge your AI efforts with the use of A...ITCamp 2019 - Silviu Niculita - Supercharge your AI efforts with the use of A...
ITCamp 2019 - Silviu Niculita - Supercharge your AI efforts with the use of A...
 
ITCamp 2019 - Peter Leeson - Managing Skills
ITCamp 2019 - Peter Leeson - Managing SkillsITCamp 2019 - Peter Leeson - Managing Skills
ITCamp 2019 - Peter Leeson - Managing Skills
 
ITCamp 2019 - Ivana Milicic - Color - The Shadow Ruler of UX
ITCamp 2019 - Ivana Milicic - Color - The Shadow Ruler of UXITCamp 2019 - Ivana Milicic - Color - The Shadow Ruler of UX
ITCamp 2019 - Ivana Milicic - Color - The Shadow Ruler of UX
 
ITCamp 2019 - Florin Loghiade - Azure Kubernetes in Production - Field notes...
ITCamp 2019 - Florin Loghiade -  Azure Kubernetes in Production - Field notes...ITCamp 2019 - Florin Loghiade -  Azure Kubernetes in Production - Field notes...
ITCamp 2019 - Florin Loghiade - Azure Kubernetes in Production - Field notes...
 
ITCamp 2019 - Florin Flestea - How 3rd Level support experience influenced m...
ITCamp 2019 - Florin Flestea -  How 3rd Level support experience influenced m...ITCamp 2019 - Florin Flestea -  How 3rd Level support experience influenced m...
ITCamp 2019 - Florin Flestea - How 3rd Level support experience influenced m...
 
ITCamp 2019 - Eldert Grootenboer - Cloud Architecture Recipes for The Enterprise
ITCamp 2019 - Eldert Grootenboer - Cloud Architecture Recipes for The EnterpriseITCamp 2019 - Eldert Grootenboer - Cloud Architecture Recipes for The Enterprise
ITCamp 2019 - Eldert Grootenboer - Cloud Architecture Recipes for The Enterprise
 
ITCamp 2019 - Cristiana Fernbach - Blockchain Legal Trends
ITCamp 2019 - Cristiana Fernbach - Blockchain Legal TrendsITCamp 2019 - Cristiana Fernbach - Blockchain Legal Trends
ITCamp 2019 - Cristiana Fernbach - Blockchain Legal Trends
 
ITCamp 2019 - Andy Cross - Machine Learning with ML.NET and Azure Data Lake
ITCamp 2019 - Andy Cross - Machine Learning with ML.NET and Azure Data LakeITCamp 2019 - Andy Cross - Machine Learning with ML.NET and Azure Data Lake
ITCamp 2019 - Andy Cross - Machine Learning with ML.NET and Azure Data Lake
 
ITCamp 2019 - Andy Cross - Business Outcomes from AI
ITCamp 2019 - Andy Cross - Business Outcomes from AIITCamp 2019 - Andy Cross - Business Outcomes from AI
ITCamp 2019 - Andy Cross - Business Outcomes from AI
 
ITCamp 2019 - Alex Mang - I'm Confused Should I Orchestrate my Containers on ...
ITCamp 2019 - Alex Mang - I'm Confused Should I Orchestrate my Containers on ...ITCamp 2019 - Alex Mang - I'm Confused Should I Orchestrate my Containers on ...
ITCamp 2019 - Alex Mang - I'm Confused Should I Orchestrate my Containers on ...
 
ITCamp 2019 - Alex Mang - How Far Can Serverless Actually Go Now
ITCamp 2019 - Alex Mang - How Far Can Serverless Actually Go NowITCamp 2019 - Alex Mang - How Far Can Serverless Actually Go Now
ITCamp 2019 - Alex Mang - How Far Can Serverless Actually Go Now
 
ITCamp 2019 - Peter Leeson - Vitruvian Quality
ITCamp 2019 - Peter Leeson - Vitruvian QualityITCamp 2019 - Peter Leeson - Vitruvian Quality
ITCamp 2019 - Peter Leeson - Vitruvian Quality
 
ITCamp 2018 - Ciprian Sorlea - Million Dollars Hello World Application
ITCamp 2018 - Ciprian Sorlea - Million Dollars Hello World ApplicationITCamp 2018 - Ciprian Sorlea - Million Dollars Hello World Application
ITCamp 2018 - Ciprian Sorlea - Million Dollars Hello World Application
 
ITCamp 2018 - Ciprian Sorlea - Enterprise Architectures with TypeScript And F...
ITCamp 2018 - Ciprian Sorlea - Enterprise Architectures with TypeScript And F...ITCamp 2018 - Ciprian Sorlea - Enterprise Architectures with TypeScript And F...
ITCamp 2018 - Ciprian Sorlea - Enterprise Architectures with TypeScript And F...
 
ITCamp 2018 - Mete Atamel Ian Talarico - Google Home meets .NET containers on...
ITCamp 2018 - Mete Atamel Ian Talarico - Google Home meets .NET containers on...ITCamp 2018 - Mete Atamel Ian Talarico - Google Home meets .NET containers on...
ITCamp 2018 - Mete Atamel Ian Talarico - Google Home meets .NET containers on...
 
ITCamp 2018 - Magnus Mårtensson - Azure Global Application Perspectives
ITCamp 2018 - Magnus Mårtensson - Azure Global Application PerspectivesITCamp 2018 - Magnus Mårtensson - Azure Global Application Perspectives
ITCamp 2018 - Magnus Mårtensson - Azure Global Application Perspectives
 
ITCamp 2018 - Magnus Mårtensson - Azure Resource Manager For The Win
ITCamp 2018 - Magnus Mårtensson - Azure Resource Manager For The WinITCamp 2018 - Magnus Mårtensson - Azure Resource Manager For The Win
ITCamp 2018 - Magnus Mårtensson - Azure Resource Manager For The Win
 
ITCamp 2018 - Cristiana Fernbach - GDPR compliance in the industry 4.0
ITCamp 2018 - Cristiana Fernbach - GDPR compliance in the industry 4.0ITCamp 2018 - Cristiana Fernbach - GDPR compliance in the industry 4.0
ITCamp 2018 - Cristiana Fernbach - GDPR compliance in the industry 4.0
 
ITCamp 2018 - Andrea Martorana Tusa - Writing queries in SQL Server 2016-2017
ITCamp 2018 - Andrea Martorana Tusa - Writing queries in SQL Server 2016-2017ITCamp 2018 - Andrea Martorana Tusa - Writing queries in SQL Server 2016-2017
ITCamp 2018 - Andrea Martorana Tusa - Writing queries in SQL Server 2016-2017
 

Dernier

Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 

Dernier (20)

Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 

Xamarin Under The Hood - Dan Ardelean

  • 1. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals Xamarin - Under the Bridge Microsoft&Xamarin MVP, Xamarin Certified Mobile Developer CTO Mahiz S.r.l. dan.ardelean@mahiz.it Twitter: @danardelean Dan Ardelean
  • 2. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals Many thanks to our sponsors & partners! GOLD SILVER PARTNERS PLATINUM POWERED BY
  • 3. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals XAMARIN
  • 4. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals XAMARIN C#/F# Visual Studio Xamarin Studio Black Magic Native
  • 5. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals iOS Native Applications
  • 6. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals iOS Native Application
  • 7. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals DEMO XCODE SINGLE VIEW APPLICATION
  • 8. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals C# to Objective-C world
  • 9. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals Xamarin iOS Compilation
  • 10. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals • Expose Objectve-C to C# using Selectors • objc_msgSend functions Selectors -[NSString sizeWithFont:forWidth:lineBreakMode:] sizeWithFont Selector: - (CGSize)sizeWithFont:(UIFont *)font forWidth:(CGFloat)width lineBreakMode:(UILineBreakMode)lineBreakMode Objective-C declaration: CGSize objc_msgSend(IntPtr target, IntPtr selector, IntPtr font, nfloat width, UILineBreakMode mode); objc_msgSend [DllImport (Constants.ObjectiveCLibrary,EntryPoint="objc_msgSend")] static extern CGSize cgsize_objc_msgSend_IntPtr_float_int ( IntPtr target, IntPtr selector, IntPtr font, nfloat width, UILineBreakMode mode);
  • 11. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals • Expose Objectve-C to C# using Selectors • objc_msgSend functions Selectors NSString target = ... Selector selector = new Selector ("sizeWithFont:forWidth:lineBreakMode:"); UIFont font = ... nfloat width = ... UILineBreakMode mode = ... CGSize size = cgsize_objc_msgSend_IntPtr_float_int( target.Handle, selector.Handle, font == null ? IntPtr.Zero : font.Handle, width, mode);
  • 12. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals • Expose Managed Code to Objective-C Registrars [Register] class MyViewController : UIViewController{ [Export ("myFunc")] public void MyFunc () { } } C# (Managed Code) Objective-C @interface MyViewController : UIViewController { } -(void)myFunc; @end @implementation MyViewController {} -(void) myFunc { /* code to call the managed MyViewController.MyFunc method */ } @end
  • 13. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals DEMO XAMARIN IOS Single View Application
  • 14. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals Xamarin.iOS creates a managed wrapper, called a peer object, for every native object accessed by the Xamarin.iOS runtime Peer wrapper objects UIKit.UIButton (peer object) [UIButton] (native object)IntPtrHandle Allocated by Xamarin.iOS and collected by the GC Allocated by the iOS runtime and reference counted
  • 15. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals • Peer object increment the retain count; it is released when the managed peer is disposed or finalized Memory allocation Xamarin.iOS 1 GC Collect [brelease] 0 b=null; b.Dispose(); [brelease] 0 varb=newUIButton(...) [[UIButtonalloc]init] … or
  • 16. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals Monitoring memory allocations Memory Analysis (Heap shot) Instrument s Androi d Device Monito r Xamarin Profiler VS Profiler
  • 17. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals DEMO MEMORY ALLOCATION Single View Application
  • 18. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals ✓Prefer full delegate methods over lambdas – it makes it easier to see and understand strong references ✓Call Dispose() to release native resources immediately (vs. waiting ona GC) when you are finished with a peer wrapper ✓Always unsubscribe from events you manually wire up; alternatively, use the Storyboard to connect events which can then be cleaned up automatically Xamarin.iOS Tips
  • 19. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals Android native application
  • 20. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals Android Native Compilation .dexfilesJava compile r Android dex compiler Java bytecodes Dalvik bytecodes
  • 21. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals Android Native Compilation .dexfiles Resources (e.g. images) .apkfileAndroid apkbuilde r The .apkfile contains all the app's assets and is ready to run
  • 22. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals Android Native Execution Bytecodes are compiled to native code at installation (called Ahead-of-Time or AOT) MyApp.apk Android Runtime (ART) Apps run in their own process with their own copy of the ART Virtual Machine
  • 23. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals DEMO ANDROID STUDIO
  • 24. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals Xamarin.Android Architecture
  • 25. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals Xamarin.Android Compilation assemblyC# compiler IL and metadata Linke r Monoassemblies yourassemblies Monoassemblies (filtered) Determines which class members are used in your app and includes only those members in the output yourassemblies (filtered)
  • 26. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals Xamarin.Android Compilation Mono Runtime The Xamarin build tools add the Mono VM to your application package .apkfileAndroid apkbuilde r
  • 27. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals DEMO XAMARIN.ANDROID
  • 28. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals Xamarin.Android GC Process GC Collect Can collect object? Is Peer Object ? Yes Replace JNI handle with Weak Handle Yes Force Android GC JNI handle collected ? Collect object No Yes Replace JNI weak handle with strong handle reference NoPeer object kept alive
  • 29. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals • Integration between Xamarin GC and JVM GC is performed through a native extension called the GC Bridge GC Bridge Xamarin Manage d Memory Android Manage d Memory GC Bridge Process Memor y
  • 30. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals • GC_ messages provide details about bridge and collection times Monitoring GC Performance GC_MAJOR:(Minor allowance) pause 29.11ms, total 29.35ms, bridge 0.15msmajor 4048K/0K los 2766K/0K Lower pause, bridge and total times are preferred
  • 31. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals • C# objects must be boxed to create a JVM representation of the object; intrinsic types (strings, numeric values and dates) are all special cased Xamarin and the JAVA VM C# Object Java Object ArrayAdapter<Tweet> ArrayAdapter ArrayLis tTweet Tweet Tweet Tweet Tweet Tweet Tweet Tweet ListView
  • 32. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals • Instead, do as much as possible in either C# or Java, interop is expensive Stay in your yard C# Object Java Object TweetAdapter List<Tweet> Tweet Tweet Tweet Tweet ListView
  • 33. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals ✓Should call Dispose() to release the native resources immediately (vs waiting on a GC) when you are finished with a peer wrapper ✓Avoid placing a large numbers of references in peer objects, remember GC is more expensive for these special types ✓Avoid passing pure C# custom types into Java APIs if possible Xamarin.Android Tips
  • 34. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals Xamarin Process Memory UIView UIImage MKMapView ... Activity Intent TextView ... Managed Memory C# and .NET objects are allocated here - this is all GC knows about
  • 35. @ITCAMPRO #ITCAMP17Community Conference for IT Professionals @ITCAMPRO #ITCAMP17Community Conference for IT Professionals Q & A