Sviluppo apps multipiattaforma con visual studio e xamarin

1,006 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,006
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
28
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Sviluppo apps multipiattaforma con visual studio e xamarin

  1. 1. Template designed by sviluppo apps multipiattaforma con visual studio e xamarin Fabio Cozzolino fabio@dotnetside.org http://dotnetside.org/blogs/fabio
  2. 2. brought to you by
  3. 3. perchè sviluppare con Xamarin l’ambiente di sviluppo real world apps agenda
  4. 4. smartphone OS market share – 03.14 Italy USA Android 70,7 % 57,6 % BlackBerry 1,2 % 0,7 % iOS 12,9 % 35,9 % Windows Phone 13,9 % 5,3 % Other 1,3 % 0,4 % Fonte: Kantar WorldPanel http://www.kantarworldpanel.com/smartphone-os-market-share/
  5. 5. diversificazione molti OS = molti ambienti diversi linguaggi ogni app deve essere implementata per iOS (iPhone-iPad), per Android e per Windows Phone parola d’ordine: riutilizzo
  6. 6. cross-platform development
  7. 7. native apps
  8. 8. evoluzione di mono (ximian, novell...) framework sempre aggiornato e tools di sviluppo binding e accesso alle API native di iOS e Android aggiornamento entro le 24 ore successive ad ogni rilascio ufficiale ambiente di sviluppo (Xamarin Studio e/o Visual Studio) C# everywhere permette il riutilizzo delle nostre conoscenze in .NET riutilizzo del codice, non della UI ogni OS ha il suo paradigma (es.: panorama per Windows Phone) cos’è xamarin
  9. 9. come funziona xamarin? compilazione nativa devono essere incluse le librerie Xamarin/Mono utilizzate minimizzazione del pacchetto con il Linker (30% più piccolo) iOS: AOT (ahead-of-time) precompilazione per ARM con mtouch Android: JIT (just-in-time) compilato in bytecode ed eseguito nella MonoVM (inclusa) esecuzione side-by-side con la DalvikVM è possibile utilizzare anche le funzionalità Java esposte dalla Dalvik
  10. 10. Cosa serve per lo sviluppo iOS Xamarin Studio Un account Apple Developer Un Mac con Xcode Ma anche Windows  Xamarin Plugin per Visual Studio Un mac che agisce da server di compilazione
  11. 11. DEMO Hello World!
  12. 12. come condivido il codice? file linking ... e uso le costanti di compilazione condizionale Portable Class Library (PCL) 1 assembly + piattaforme supporto completo in Visual Studio 2013 e in Xamarin Studio
  13. 13. portable class library codebase centralizzata compatibilità attraverso limitazione (esempio: supporto al MVVM limitato) non disponibile con versioni del .NET Framework antecedenti alla 4.5 reference alla System.Window necessaria richiedono un approccio architetturale più avanzato
  14. 14. PCL: Platform Abstraction
  15. 15. Maximizing Code Sharing
  16. 16. cosa possiamo condividere Business Logic View Models Navigation Entities Web Services Client Data Access
  17. 17. Shared Code OS Specific Code maximizing code sharing iOS UI Android UI Windows Phone UI Business Layer Application Layer Application Layer Application Layer Data Access Layer Service Layer
  18. 18. Shared Code OS Specific Code maximizing code sharing iOS UI Android UI Windows Phone UI Business Layer Data Access Layer Service Layer Application Layer
  19. 19. Shared Code OS Specific Code - View model-view-viewmodel iOS UI Android UI Windows Phone UI ViewModel Model Business Layer Data Access Layer Service Layer
  20. 20. DEMO maximizing code sharing
  21. 21. riferimenti Xamarin http://www.xamarin.com Channel 9 http://channel9.msdn.com/search?term=xamarin Il mio blog http://dotnetside.org/blogs/fabio @fabiocozzolino
  22. 22. Grazie a tutti per la partecipazione Riceverete il link per il download a slide e demo via email nei prossimi giorni Per contattarmi cozzolino.fabio@gmail.com Grazie
  23. 23. bonus
  24. 24. Code Sharing: Data Layer SQLite database Supportato dalle tre piattaforme e da WinRT Accessibile anche nativamente con le CoreData in iOS e SQLiteOpenHelper in Android ADO.NET (Classic) SQLite-NET ORM (anche Portable!) Molto comodo! 
  25. 25. Code Sharing: File Access System.IO Isolated Storage Stesso meccanismo implementato in Windows Phone string file = Path.Combine ( Environment.GetFolderPath (Environment.SpecialFolder.Personal), "yaf.txt"); System.IO.WriteAllText (file, "Yet Another File!");
  26. 26. Code Sharing: Network WebClient / HttpWebRequest Reachability.cs Per il check della rete RestSharp / ServiceStack.Client WCF Limitatamente al BasicHttpBinding
  27. 27. Code Sharing: Task e Threads Esecuzione di task nello UI thread Ogni piattaforma ha un approccio differente iOS: NSObject.BeginInvokeOnMainThread(action) Android: Activity.RunOnUiThread(action) WP: Deployment.Current.Dispatcher.BeginInvoke(action) Utilizziamo un adapter per eseguire le azioni
  28. 28. Microsoft NuGet Libraries Async for .NET Framework 4, Silverlight 4 and 5, and WP 7.5 & 8 Microsoft BCL Build Components Microsoft BCL Portability Pack Microsoft Composition Microsoft Compression Microsoft HTTP Client Libraries Microsoft Immutable Collections Microsoft ASP.NET SignalR .NET Client ODataLib
  29. 29. Alcune PCL Libraries MvvmCross ReactiveUI Akavache – Async Persistent Key-Value Store Splat – Image Loading Budgie – Twitter Library Azure Mobile Services Json.Net SO MANY MORE!!!
  30. 30. Slide con sponsor che arriva a qualche giorno dalla conferenza sponsor
  31. 31. prima riga seconda riga terza riga …. conteunti
  32. 32. demo Hello World
  33. 33. demo Hello World
  34. 34. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis eros enim, gravida in ultrices vitae. Tincidunt ut mi.
  35. 35. elementi grafici e diagrammi Windows Kernel Services JavaScriptC/C++ C#, VB Metro style Apps Communication & Data Application Model Devices & Printing Windows Runtime APIs Graphics & Media XAML HTML / CSS HTML js XAML C# VB C++ C Desktop Apps Win32 WPF SLBrowser SystemServicesView Model Controller Kernel
  36. 36. Grazie a tutti per la partecipazione Riceverete il link per il download a slide e demo via email nei prossimi giorni Per contattarmi gino@beppe.com Grazie

×