ProgrammiamoiPhone e iPad (e non solo!)con• Stefano Ottaviani  ‣ steott@gmail.com  ‣ @ste8
Quale sarà il futuro di MT?  2
Quale sarà il futuro di MT?  2
Quale sarà il futuro di MT?  2
Quale sarà il futuro di MT?   All	  technology	  roadmaps	  remain	            intact                 2
Quale sarà il futuro di MT?   All	  technology	  roadmaps	  remain	            intact                 2
Quale sarà il futuro di MT?                             Can	  we	  con;nue	                                 working	  with...
Quale sarà il futuro di MT?                           No P anic                             Can	  we	  con;nue	           ...
Conosciamoci un po’3
Conosciamoci un po’• Chi utilizza già MonoTouch?    3
Conosciamoci un po’• Chi utilizza già MonoTouch?• Chi ha idea di cosa si tratta?    3
Conosciamoci un po’• Chi utilizza già MonoTouch?• Chi ha idea di cosa si tratta?• Chi conosce già Objective-C?    3
Conosciamoci un po’• Chi utilizza già MonoTouch?• Chi ha idea di cosa si tratta?• Chi conosce già Objective-C?• Chi conosc...
Chi sono?4
Chi sono?• Dev / SEng @ KILOG Srl  ‣ Da Palm OS a iPad, passando per Windows CE / Mobile    (C++, .NET CF)     4
Chi sono?• Dev / SEng @ KILOG Srl  ‣ Da Palm OS a iPad, passando per Windows CE / Mobile    (C++, .NET CF)• Communities  ‣...
Chi sono?• Dev / SEng @ KILOG Srl  ‣ Da Palm OS a iPad, passando per Windows CE / Mobile      (C++, .NET CF)• Communities ...
Cosa devo sviluppare?   (1/2) 5
Cosa devo sviluppare?             (1/2)• App LOB (Line of Business)  ‣ Online e soprattutto OFFLINE    ✴Non si vive di sol...
Cosa devo sviluppare?             (1/2)• App LOB (Line of Business)  ‣ Online e soprattutto OFFLINE    ✴Non si vive di sol...
Cosa devo sviluppare?             (1/2)• App LOB (Line of Business)  ‣ Online e soprattutto OFFLINE    ✴Non si vive di sol...
Cosa devo sviluppare?   (2/2) 6
Cosa devo sviluppare?               (2/2)• Performante  ‣ L’exe non deve essere per forza piccolo    6
Cosa devo sviluppare?               (2/2)• Performante  ‣ L’exe non deve essere per forza piccolo• Controllo sul deploy de...
Cosa devo sviluppare?               (2/2)• Performante  ‣ L’exe non deve essere per forza piccolo• Controllo sul deploy de...
Il layer UI va cmq rifatto            (1/5)       Esempio MIX11 App         http://tinyurl.com/442vt3t                 iPh...
Il layer UI va cmq rifatto            (2/5)       Esempio MIX11 App         http://tinyurl.com/442vt3t                   W...
Il layer UI va cmq rifatto            (3/5)       Esempio MIX11 App         http://tinyurl.com/442vt3t                 And...
Il layer UI va cmq rifatto                                (4/5)  Ipse dixit: Martin Fowler  http://martinfowler.com/bliki/...
Il layer UI va cmq rifatto          (5/5)Ste dixit: ma almeno riutilizziamo lalogica di business e di accesso dati...     ...
Che strumenti abbiamo? 12
Che strumenti abbiamo?• Objective-C  ‣ learning curve ulteriore x il linguaggio  ‣ target: “solo” iPhone, iPad, Mac OS X  ...
Che strumenti abbiamo?• Objective-C  ‣ learning curve ulteriore x il linguaggio  ‣ target: “solo” iPhone, iPad, Mac OS X• ...
Che strumenti abbiamo?• Objective-C  ‣ learning curve ulteriore x il linguaggio  ‣ target: “solo” iPhone, iPad, Mac OS X• ...
Cos’è MonoTouch? (1/3)13
Cos’è MonoTouch? (1/3)• Come Mono... ma diverso!  ‣ Suite per portare C# e .NET su iPhone!    13
Cos’è MonoTouch? (1/3)• Come Mono... ma diverso!  ‣ Suite per portare C# e .NET su iPhone!• Alcune limitazioni da ambiente...
Cos’è MonoTouch? (2/3)14
Cos’è MonoTouch? (2/3)• MonoDevelop + Interface Builder  ‣ Lavori in corso per IB 4    14
Cos’è MonoTouch? (2/3)• MonoDevelop + Interface Builder  ‣ Lavori in corso per IB 4• Cosa c’è  ‣ C# 4  ‣ Garbage Collectio...
Cos’è MonoTouch? (3/3)15
Cos’è MonoTouch? (3/3)• Thin layer sopra le API native  ‣ rapidità di aggiornamento all’iOS SDK  ‣ binding x utilizzo libr...
Cos’è MonoTouch? (3/3)• Thin layer sopra le API native  ‣ rapidità di aggiornamento all’iOS SDK  ‣ binding x utilizzo libr...
Cos’è MonoTouch? (3/3)• Thin layer sopra le API native  ‣ rapidità di aggiornamento all’iOS SDK  ‣ binding x utilizzo libr...
Soddisfa i miei bisogni?   (1/3)  16
Soddisfa i miei bisogni?            (1/3)• App LOB (Line of Business)  ‣ Online e soprattutto OFFLINE    - Non si vive di ...
Soddisfa i miei bisogni?            (1/3)• App LOB (Line of Business)  ‣ Online e soprattutto OFFLINE    - Non si vive di ...
Soddisfa i miei bisogni?   (2/3)  17
Soddisfa i miei bisogni?              (2/3)• UX usabile e attraente!  ✴Stesse possibilità di Objective-C (IB)    17
Soddisfa i miei bisogni?                             (2/3)• UX usabile e attraente!  ✴Stesse possibilità di Objective-C (I...
Soddisfa i miei bisogni?                             (2/3)• UX usabile e attraente!  ✴Stesse possibilità di Objective-C (I...
Soddisfa i miei bisogni?   (3/3)  18
Soddisfa i miei bisogni?             (3/3)• Ridurre potenziali problemi x sviluppo  ‣ No puntatori & rilascio memoria  ✴C#...
Risorse per iniziare19
Risorse per iniziare• 2 Video da NDC 2010  ‣ http://tekpub.com/conferences/ndc2010     19
Risorse per iniziare• 2 Video da NDC 2010  ‣ http://tekpub.com/conferences/ndc2010• Stack Overflow / Mailing List     19
Risorse per iniziare• 2 Video da NDC 2010  ‣ http://tekpub.com/conferences/ndc2010• Stack Overflow / Mailing List• Esempi:...
Risorse per iniziare• 2 Video da NDC 2010  ‣ http://tekpub.com/conferences/ndc2010• Stack Overflow / Mailing List• Esempi:...
Ingredienti per iniziare20
Ingredienti per iniziare• Un computer Mac con Mac OS X   20
Ingredienti per iniziare• Un computer Mac con Mac OS X• iPhone SDK   20
Ingredienti per iniziare• Un computer Mac con Mac OS X• iPhone SDK• MonoTouch (+ Mono)   20
Ingredienti per iniziare• Un computer Mac con Mac OS X• iPhone SDK• MonoTouch (+ Mono)• MonoDevelop   20
Configurazione ambiente 21
Configurazione ambiente• Boot Camp + Parallels =  stessa (ma unica) partizione Windows    21
Configurazione ambiente• Boot Camp + Parallels =  stessa (ma unica) partizione Windows• Shortcuts per  ‣   Mac OS X  ‣   W...
Visual Studio come IDE   (1/2) 22
Visual Studio come IDE             (1/2)• Perchè vorrei farlo?  ‣ IDE migliore / Resharper, ...    22
Visual Studio come IDE              (1/2)• Perchè vorrei farlo?  ‣ IDE migliore / Resharper, ...• Si può fare! (cit)  ‣ o ...
Visual Studio come IDE              (1/2)• Perchè vorrei farlo?  ‣ IDE migliore / Resharper, ...• Si può fare! (cit)  ‣ o ...
Visual Studio come IDE                  (2/2)• Diverse soluzioni:  ‣ https://github.com/jamiebriant/VsMono    • https://gi...
Poniamo le basi...     ...per costruire la prima App!24
Cocoa Touch: il Framework  25
Cocoa Touch: il Framework• Cocoa : .NET FX = Objective-C : C#    25
Cocoa Touch: il Framework• Cocoa : .NET FX = Objective-C : C#• Foundation  ‣ objects, memory, ...    25
Cocoa Touch: il Framework• Cocoa : .NET FX = Objective-C : C#• Foundation  ‣ objects, memory, ...• UIKit, GameKit, MapKit,...
Cocoa Touch: il Framework• Cocoa : .NET FX = Objective-C : C#• Foundation  ‣ objects, memory, ...• UIKit, GameKit, MapKit,...
Window e Views26
Window e Views• Application / AppDelegate  ‣ main, ...  ‣ 10 secondi per caricare!     26
Window e Views• Application / AppDelegate  ‣ main, ...  ‣ 10 secondi per caricare!• Window  ‣ 1 sola per App!!! Poi coi Vi...
Window e Views• Application / AppDelegate  ‣ main, ...  ‣ 10 secondi per caricare!• Window  ‣ 1 sola per App!!! Poi coi Vi...
1° Demo!• Usare MonoDevelop (anche più istanze)• Creare UI con / senza Interface Builder• Utilizzo di immagini / risorse• ...
ViewControllers28
ViewControllers• Basato su MVC (o una specie...)    28
ViewControllers• Basato su MVC (o una specie...)• Creazione di app con più screen  ‣ Navigation  ‣ Resize, orientamento   ...
ViewControllers• Basato su MVC (o una specie...)• Creazione di app con più screen  ‣ Navigation  ‣ Resize, orientamento• “...
Esempi di ViewController   (1/4)        TabBarController  29
Esempi di ViewController      (2/4)       NavigationController  30
Esempi di ViewController            (3/4) SplitViewController / PopoverController   31
Esempi di ViewController     (4/4)       TableViewController  32
2° Demo!• Creare una form con UIViewController• Resize e rotazione form• Anchor e docking• App con più form grazie ai View...
Altri approcci per UI34
Altri approcci per UI• Tentativi di MVVM    34
Altri approcci per UI• Tentativi di MVVM• DSL?    (Domain-specific language)    34
Altri approcci per UI• Tentativi di MVVM• DSL?    (Domain-specific language)  ‣ iCircuit:   http://praeclarum.org/post/152...
Altri approcci per UI• Tentativi di MVVM• DSL?   (Domain-specific language)  ‣ iCircuit:   http://praeclarum.org/post/1520...
Accesso ai dati locali (1/2)35
Accesso ai dati locali (1/2)• SQLite  ‣ portabilità in altre piattaforme??  ‣ Repository / DAO pattern? ORM?    35
Accesso ai dati locali (1/2)• SQLite  ‣ portabilità in altre piattaforme??  ‣ Repository / DAO pattern? ORM?• Tipi di acce...
Accesso ai dati locali (2/2)• Performance Tips  ‣ DataReader via GetString, GetInt, ..   http://www.bayshield.com/2010/6/2...
Accesso ai dati remoti37
Accesso ai dati remoti• ASMX Web Service e WCF  come in Silverlight   37
Accesso ai dati remoti• ASMX Web Service e WCF  come in Silverlight• REST via HttpRequest / Response    37
Accesso ai dati remoti• ASMX Web Service e WCF  come in Silverlight• REST via HttpRequest / Response• JSON  ‣ https://gith...
IoC / DI• Diverse librerie  ‣ OpenNETCF.IoC  ‣ Funq, PicoContainer, TinyIoC  ‣ http://monotouch.info/Tags/IoC    38
Unit Testing• Attenti a creare un progetto NUnit  che ne referenzia uno MonoTouch!• Testare la business logic / DAL• Testa...
Alcuni framework di supporto  40
Alcuni framework di supporto• MonoTouch.Dialog  ‣   https://github.com/migueldeicaza/MonoTouch.Dialog       40
Alcuni framework di supporto• MonoTouch.Dialog  ‣   https://github.com/migueldeicaza/MonoTouch.Dialog• MonoCross  ‣ Stile ...
Alcuni framework di supporto• MonoTouch.Dialog  ‣   https://github.com/migueldeicaza/MonoTouch.Dialog• MonoCross  ‣ Stile ...
What else?41
What else?• UIAlertView non “asincrona”  ‣ magari qualcosa con le coroutine, a la    Caliburn?    41
Domande?42
Grazie!43
Upcoming SlideShare
Loading in...5
×

Programmiamo iPhone e iPad (e non solo!) con MonoTouch

1,412

Published on

MonoTouch ha delle caratteristiche che lo differenziano rispetto agli altri framework per lo sviluppo su iPhone / iPad: vediamo quali sono, che vantaggi ci possono dare e in che modo possono rivelarsi più divertenti :), in particolar modo nell'ambito delle applicazioni LOB (Line of Business).

Anche se MonoTouch non è direttamente cross-platform, cercheremo inoltre di dare uno sguardo a come organizzare i nostri progetti in modo tale da farli girare anche su altri device, in particolare Android, Windows Phone 7, e perché no, desktop e netbook, col minor sforzo possibile.

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

  • Be the first to like this

No Downloads
Views
Total Views
1,412
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
21
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Programmiamo iPhone e iPad (e non solo!) con MonoTouch

    1. 1. ProgrammiamoiPhone e iPad (e non solo!)con• Stefano Ottaviani ‣ steott@gmail.com ‣ @ste8
    2. 2. Quale sarà il futuro di MT? 2
    3. 3. Quale sarà il futuro di MT? 2
    4. 4. Quale sarà il futuro di MT? 2
    5. 5. Quale sarà il futuro di MT? All  technology  roadmaps  remain   intact 2
    6. 6. Quale sarà il futuro di MT? All  technology  roadmaps  remain   intact 2
    7. 7. Quale sarà il futuro di MT? Can  we  con;nue   working  with   MonoTouch? All  technology  roadmaps  remain   intact You  should,  yes.  It  will   be  compa;ble. 2
    8. 8. Quale sarà il futuro di MT? No P anic Can  we  con;nue   working  with   MonoTouch? All  technology  roadmaps  remain   intact You  should,  yes.  It  will   be  compa;ble. 2
    9. 9. Conosciamoci un po’3
    10. 10. Conosciamoci un po’• Chi utilizza già MonoTouch? 3
    11. 11. Conosciamoci un po’• Chi utilizza già MonoTouch?• Chi ha idea di cosa si tratta? 3
    12. 12. Conosciamoci un po’• Chi utilizza già MonoTouch?• Chi ha idea di cosa si tratta?• Chi conosce già Objective-C? 3
    13. 13. Conosciamoci un po’• Chi utilizza già MonoTouch?• Chi ha idea di cosa si tratta?• Chi conosce già Objective-C?• Chi conosce già .NET Framework? 3
    14. 14. Chi sono?4
    15. 15. Chi sono?• Dev / SEng @ KILOG Srl ‣ Da Palm OS a iPad, passando per Windows CE / Mobile (C++, .NET CF) 4
    16. 16. Chi sono?• Dev / SEng @ KILOG Srl ‣ Da Palm OS a iPad, passando per Windows CE / Mobile (C++, .NET CF)• Communities ‣ DotNetMarche, XPUG Marche 4
    17. 17. Chi sono?• Dev / SEng @ KILOG Srl ‣ Da Palm OS a iPad, passando per Windows CE / Mobile (C++, .NET CF)• Communities ‣ DotNetMarche, XPUG Marche• Contatti ‣ steott@gmail.com ‣ @ste8 4 ‣ blogs.ugidotnet.org/ste8
    18. 18. Cosa devo sviluppare? (1/2) 5
    19. 19. Cosa devo sviluppare? (1/2)• App LOB (Line of Business) ‣ Online e soprattutto OFFLINE ✴Non si vive di soli servizi! 5
    20. 20. Cosa devo sviluppare? (1/2)• App LOB (Line of Business) ‣ Online e soprattutto OFFLINE ✴Non si vive di soli servizi!• Device:iPhone e iPad come riferimenti ‣ ma ci sono anche Android, WP7, netbook 5
    21. 21. Cosa devo sviluppare? (1/2)• App LOB (Line of Business) ‣ Online e soprattutto OFFLINE ✴Non si vive di soli servizi!• Device:iPhone e iPad come riferimenti ‣ ma ci sono anche Android, WP7, netbook• UX usabile e attraente! 5
    22. 22. Cosa devo sviluppare? (2/2) 6
    23. 23. Cosa devo sviluppare? (2/2)• Performante ‣ L’exe non deve essere per forza piccolo 6
    24. 24. Cosa devo sviluppare? (2/2)• Performante ‣ L’exe non deve essere per forza piccolo• Controllo sul deploy dell’app 6
    25. 25. Cosa devo sviluppare? (2/2)• Performante ‣ L’exe non deve essere per forza piccolo• Controllo sul deploy dell’app• Ridurre potenziali problemi x sviluppo ‣ No puntatori & rilascio memoria 6
    26. 26. Il layer UI va cmq rifatto (1/5) Esempio MIX11 App http://tinyurl.com/442vt3t iPhone 7
    27. 27. Il layer UI va cmq rifatto (2/5) Esempio MIX11 App http://tinyurl.com/442vt3t WP7 8
    28. 28. Il layer UI va cmq rifatto (3/5) Esempio MIX11 App http://tinyurl.com/442vt3t Android 9
    29. 29. Il layer UI va cmq rifatto (4/5) Ipse dixit: Martin Fowler http://martinfowler.com/bliki/CrossPlatformMobile.html To summarize:• Dont use cross-platform toolkits• For maximum reach: built a web app that looks like web app• To appeal to a particular platform: build a native app 10 that platform, with a experience design for based on that platforms interaction style
    30. 30. Il layer UI va cmq rifatto (5/5)Ste dixit: ma almeno riutilizziamo lalogica di business e di accesso dati... ... soprattutto in app offline! Riscrivere il codice in linguaggi diversi per ogni piattaforma è 11 molto costoso!
    31. 31. Che strumenti abbiamo? 12
    32. 32. Che strumenti abbiamo?• Objective-C ‣ learning curve ulteriore x il linguaggio ‣ target: “solo” iPhone, iPad, Mac OS X 12
    33. 33. Che strumenti abbiamo?• Objective-C ‣ learning curve ulteriore x il linguaggio ‣ target: “solo” iPhone, iPad, Mac OS X• HTML + JavaScript ‣ attenti alle diverse modalità! ‣ indicata se già li conosciamo 12
    34. 34. Che strumenti abbiamo?• Objective-C ‣ learning curve ulteriore x il linguaggio ‣ target: “solo” iPhone, iPad, Mac OS X• HTML + JavaScript ‣ attenti alle diverse modalità! ‣ indicata se già li conosciamo• MonoTouch & Co. 12
    35. 35. Cos’è MonoTouch? (1/3)13
    36. 36. Cos’è MonoTouch? (1/3)• Come Mono... ma diverso! ‣ Suite per portare C# e .NET su iPhone! 13
    37. 37. Cos’è MonoTouch? (1/3)• Come Mono... ma diverso! ‣ Suite per portare C# e .NET su iPhone!• Alcune limitazioni da ambiente Apple ‣ Usa compilazione statica (AOT, Ahead of Time) invece che a runtime (JIT) • http://www.mono-project.com/AOT ‣ No generazione codice • Reflection.Emit, DLR, Generic Virtual 13 Methods
    38. 38. Cos’è MonoTouch? (2/3)14
    39. 39. Cos’è MonoTouch? (2/3)• MonoDevelop + Interface Builder ‣ Lavori in corso per IB 4 14
    40. 40. Cos’è MonoTouch? (2/3)• MonoDevelop + Interface Builder ‣ Lavori in corso per IB 4• Cosa c’è ‣ C# 4 ‣ Garbage Collection ‣ LINQ / Lamba ‣ Generics ‣ Reflection / Static Reflection ‣ WCF 14 ‣ Parallel Framework
    41. 41. Cos’è MonoTouch? (3/3)15
    42. 42. Cos’è MonoTouch? (3/3)• Thin layer sopra le API native ‣ rapidità di aggiornamento all’iOS SDK ‣ binding x utilizzo librerie Objective-C 15
    43. 43. Cos’è MonoTouch? (3/3)• Thin layer sopra le API native ‣ rapidità di aggiornamento all’iOS SDK ‣ binding x utilizzo librerie Objective-C‣ learning curve: conoscere le basi dell’ambiente nativo – Oltre alle HIG (Human Interface Guidelines) – Infrastruttura (view controllers, ...) – saper almeno leggere Objective-C 15
    44. 44. Cos’è MonoTouch? (3/3)• Thin layer sopra le API native ‣ rapidità di aggiornamento all’iOS SDK ‣ binding x utilizzo librerie Objective-C‣ learning curve: conoscere le basi dell’ambiente nativo – Oltre alle HIG (Human Interface Guidelines) – Infrastruttura (view controllers, ...) – saper almeno leggere Objective-C 15• Prezzo:pro o contro?
    45. 45. Soddisfa i miei bisogni? (1/3) 16
    46. 46. Soddisfa i miei bisogni? (1/3)• App LOB (Line of Business) ‣ Online e soprattutto OFFLINE - Non si vive di soli servizi! ✴Si... e fa molto altro! 16
    47. 47. Soddisfa i miei bisogni? (1/3)• App LOB (Line of Business) ‣ Online e soprattutto OFFLINE - Non si vive di soli servizi! ✴Si... e fa molto altro!• Device:iPhone e iPad come riferimenti ‣ ma ci sono anche Android, WP7, netbook ✴Posso condividere BIZ e DAL! 16
    48. 48. Soddisfa i miei bisogni? (2/3) 17
    49. 49. Soddisfa i miei bisogni? (2/3)• UX usabile e attraente! ✴Stesse possibilità di Objective-C (IB) 17
    50. 50. Soddisfa i miei bisogni? (2/3)• UX usabile e attraente! ✴Stesse possibilità di Objective-C (IB)• Performante ‣ L’exe non deve essere per forza piccolo ✴Compilazione “nativa”, LLVM compiler ✴iCircuit test: http://news.ycombinator.com/item?id=2557047 17
    51. 51. Soddisfa i miei bisogni? (2/3)• UX usabile e attraente! ✴Stesse possibilità di Objective-C (IB)• Performante ‣ L’exe non deve essere per forza piccolo ✴Compilazione “nativa”, LLVM compiler ✴iCircuit test: http://news.ycombinator.com/item?id=2557047• Controllo sul deploy dell’app 17 ✴Stesse possibilità di Objective-C!
    52. 52. Soddisfa i miei bisogni? (3/3) 18
    53. 53. Soddisfa i miei bisogni? (3/3)• Ridurre potenziali problemi x sviluppo ‣ No puntatori & rilascio memoria ✴C# e Garbage Collector => No puntatori! ✴Non è tutto oro...attenti ai memory leak! ✴Profiler in arrivo?? 18
    54. 54. Risorse per iniziare19
    55. 55. Risorse per iniziare• 2 Video da NDC 2010 ‣ http://tekpub.com/conferences/ndc2010 19
    56. 56. Risorse per iniziare• 2 Video da NDC 2010 ‣ http://tekpub.com/conferences/ndc2010• Stack Overflow / Mailing List 19
    57. 57. Risorse per iniziare• 2 Video da NDC 2010 ‣ http://tekpub.com/conferences/ndc2010• Stack Overflow / Mailing List• Esempi: TweetStation 19
    58. 58. Risorse per iniziare• 2 Video da NDC 2010 ‣ http://tekpub.com/conferences/ndc2010• Stack Overflow / Mailing List• Esempi: TweetStation• Libri 19
    59. 59. Ingredienti per iniziare20
    60. 60. Ingredienti per iniziare• Un computer Mac con Mac OS X 20
    61. 61. Ingredienti per iniziare• Un computer Mac con Mac OS X• iPhone SDK 20
    62. 62. Ingredienti per iniziare• Un computer Mac con Mac OS X• iPhone SDK• MonoTouch (+ Mono) 20
    63. 63. Ingredienti per iniziare• Un computer Mac con Mac OS X• iPhone SDK• MonoTouch (+ Mono)• MonoDevelop 20
    64. 64. Configurazione ambiente 21
    65. 65. Configurazione ambiente• Boot Camp + Parallels = stessa (ma unica) partizione Windows 21
    66. 66. Configurazione ambiente• Boot Camp + Parallels = stessa (ma unica) partizione Windows• Shortcuts per ‣ Mac OS X ‣ Windows da Parallels ‣ MonoDevelop ‣ Info a breve nel blog 21
    67. 67. Visual Studio come IDE (1/2) 22
    68. 68. Visual Studio come IDE (1/2)• Perchè vorrei farlo? ‣ IDE migliore / Resharper, ... 22
    69. 69. Visual Studio come IDE (1/2)• Perchè vorrei farlo? ‣ IDE migliore / Resharper, ...• Si può fare! (cit) ‣ o quasi.... solo build, NO RUN 22
    70. 70. Visual Studio come IDE (1/2)• Perchè vorrei farlo? ‣ IDE migliore / Resharper, ...• Si può fare! (cit) ‣ o quasi.... solo build, NO RUN• Non solo per progetti BIZ e DAL, anche per UI 22
    71. 71. Visual Studio come IDE (2/2)• Diverse soluzioni: ‣ https://github.com/jamiebriant/VsMono • https://github.com/follesoe/VSMonoTouch ‣ http://www.shrinkrays.net/code- snippets/csharp/monotouch-tips-and- snippets.aspx 23
    72. 72. Poniamo le basi... ...per costruire la prima App!24
    73. 73. Cocoa Touch: il Framework 25
    74. 74. Cocoa Touch: il Framework• Cocoa : .NET FX = Objective-C : C# 25
    75. 75. Cocoa Touch: il Framework• Cocoa : .NET FX = Objective-C : C#• Foundation ‣ objects, memory, ... 25
    76. 76. Cocoa Touch: il Framework• Cocoa : .NET FX = Objective-C : C#• Foundation ‣ objects, memory, ...• UIKit, GameKit, MapKit, ... 25
    77. 77. Cocoa Touch: il Framework• Cocoa : .NET FX = Objective-C : C#• Foundation ‣ objects, memory, ...• UIKit, GameKit, MapKit, ...• Intro per .Net Dev: 25 ‣ http://www.kevfoo.com/2011/05/quick-primer-cocoa-and-cocoa-touch/
    78. 78. Window e Views26
    79. 79. Window e Views• Application / AppDelegate ‣ main, ... ‣ 10 secondi per caricare! 26
    80. 80. Window e Views• Application / AppDelegate ‣ main, ... ‣ 10 secondi per caricare!• Window ‣ 1 sola per App!!! Poi coi ViewControllers... 26
    81. 81. Window e Views• Application / AppDelegate ‣ main, ... ‣ 10 secondi per caricare!• Window ‣ 1 sola per App!!! Poi coi ViewControllers...• View (UIView) ‣ Base per UI Controls (Button, Textbox, ...) 26 ‣ Base per User Control! No ViewController
    82. 82. 1° Demo!• Usare MonoDevelop (anche più istanze)• Creare UI con / senza Interface Builder• Utilizzo di immagini / risorse• Creazione di custom control con UIView• Utilizziamo le tabelle 27
    83. 83. ViewControllers28
    84. 84. ViewControllers• Basato su MVC (o una specie...) 28
    85. 85. ViewControllers• Basato su MVC (o una specie...)• Creazione di app con più screen ‣ Navigation ‣ Resize, orientamento 28
    86. 86. ViewControllers• Basato su MVC (o una specie...)• Creazione di app con più screen ‣ Navigation ‣ Resize, orientamento• “Infrastruttura” per UI Controls ‣ es. TableViewController 28
    87. 87. Esempi di ViewController (1/4) TabBarController 29
    88. 88. Esempi di ViewController (2/4) NavigationController 30
    89. 89. Esempi di ViewController (3/4) SplitViewController / PopoverController 31
    90. 90. Esempi di ViewController (4/4) TableViewController 32
    91. 91. 2° Demo!• Creare una form con UIViewController• Resize e rotazione form• Anchor e docking• App con più form grazie ai ViewController. 33
    92. 92. Altri approcci per UI34
    93. 93. Altri approcci per UI• Tentativi di MVVM 34
    94. 94. Altri approcci per UI• Tentativi di MVVM• DSL? (Domain-specific language) 34
    95. 95. Altri approcci per UI• Tentativi di MVVM• DSL? (Domain-specific language) ‣ iCircuit: http://praeclarum.org/post/1520024382/interfaces- caches-cross-platform 34
    96. 96. Altri approcci per UI• Tentativi di MVVM• DSL? (Domain-specific language) ‣ iCircuit: http://praeclarum.org/post/1520024382/interfaces- caches-cross-platform ‣ Post Antonio Ganci: http://blogs.ugidotnet.org/AntonioGanci/archive/ 2010/04/19/un-approccio-per-ottenere-una- architettura-malleabile.aspx 34
    97. 97. Accesso ai dati locali (1/2)35
    98. 98. Accesso ai dati locali (1/2)• SQLite ‣ portabilità in altre piattaforme?? ‣ Repository / DAO pattern? ORM? 35
    99. 99. Accesso ai dati locali (1/2)• SQLite ‣ portabilità in altre piattaforme?? ‣ Repository / DAO pattern? ORM?• Tipi di accesso ‣ ADO.NET ‣ API di SQLite dirette ‣ ORM (es. Vici CoolStorage) 35
    100. 100. Accesso ai dati locali (2/2)• Performance Tips ‣ DataReader via GetString, GetInt, .. http://www.bayshield.com/2010/6/29/monotouch-sqlite- performance-tip ‣ Uso di transazioni e connection pooling ‣ Quantificazione costi reflection (se usata) http://praeclarum.org/post/1572668275/quantifying- reflections-slowdown-in-sqlite-net 36
    101. 101. Accesso ai dati remoti37
    102. 102. Accesso ai dati remoti• ASMX Web Service e WCF come in Silverlight 37
    103. 103. Accesso ai dati remoti• ASMX Web Service e WCF come in Silverlight• REST via HttpRequest / Response 37
    104. 104. Accesso ai dati remoti• ASMX Web Service e WCF come in Silverlight• REST via HttpRequest / Response• JSON ‣ https://github.com/chrisntr/Newtonsoft.Json 37
    105. 105. IoC / DI• Diverse librerie ‣ OpenNETCF.IoC ‣ Funq, PicoContainer, TinyIoC ‣ http://monotouch.info/Tags/IoC 38
    106. 106. Unit Testing• Attenti a creare un progetto NUnit che ne referenzia uno MonoTouch!• Testare la business logic / DAL• Testare l’”MVC” Apple: ‣ Supervisor Controller http://ben.phegan.name/index.php/2011/02/28/ monotouch-and-unit-testing/ 39
    107. 107. Alcuni framework di supporto 40
    108. 108. Alcuni framework di supporto• MonoTouch.Dialog ‣ https://github.com/migueldeicaza/MonoTouch.Dialog 40
    109. 109. Alcuni framework di supporto• MonoTouch.Dialog ‣ https://github.com/migueldeicaza/MonoTouch.Dialog• MonoCross ‣ Stile MVC di ASP.NET MVC ‣ http://vagabondrev.org/2011/04/20/monocross-the-technology/ ‣ http://code.google.com/p/monocross/ 40
    110. 110. Alcuni framework di supporto• MonoTouch.Dialog ‣ https://github.com/migueldeicaza/MonoTouch.Dialog• MonoCross ‣ Stile MVC di ASP.NET MVC ‣ http://vagabondrev.org/2011/04/20/monocross-the-technology/ ‣ http://code.google.com/p/monocross/• ReactiveUX per MonoTouch ‣ http://code.google.com/p/proactive-framework/ 40
    111. 111. What else?41
    112. 112. What else?• UIAlertView non “asincrona” ‣ magari qualcosa con le coroutine, a la Caliburn? 41
    113. 113. Domande?42
    114. 114. Grazie!43
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×