Writing apps
for iOS with
.NET
MOBILE DEVELOPMENT WITH .NET
Chi sono
 Raffaele Fanizzi
 Membro di DotNetSide – www.dotnetside.org
 Microsoft Certified Professional Developer – MCPD
 Microsoft Certified Technical Specialist – MCTS
 Email – vifani@gmail.com
 Blog – www.vifani.com
 LinkedIn – www.linkedin.com/in/raffaelefanizzi
Agenda
 Introduzione
 Perché sviluppare per iOS ?
 Un po’ di storia
 Monotouch
 Limitazioni e Costi
 Sviluppo nativo vs web app
 Q&A
Introduzione
 Il mondo sta cambiando…
Introduzione
Introduzione
Introduzione
Introduzione
 Tra computer, tablet e smartphone, oltre il 50% dello
share è in mano ai dispositivi portatili
 Oltre il 15% delle pagine viste su internet è realizzato
da tablet e smartphone
 Gli smartphone hanno superato i telefoni cellulari
Introduzione
 Sviluppo software -> Un mondo sempre più
specializzato
 Quanti tipi di sviluppatori?
 Desktop
 Web
 Mobile web
 Enterprise
 Database
 Mobile
 Embedded
Introduzione
 Quale futuro per chi conosce .NET?
 Roseo per lo sviluppo
 Desktop
 Web
 Web mobile
 Enterprise
 E per lo sviluppo mobile?
Introduzione
 Windows Phone si sta facendo strada…
 …ma nel frattempo sarebbe meglio sfruttare le
competenze acquisite e sviluppare anche sulle altre
piattaforme
Introduzione
 Fortunatamente per noi esiste Mono, Monotouch e
Mono for Android 
Perché sviluppare per iOS ?
Perché sviluppare per iOS ?
Perché sviluppare per iOS ?
Un po’ di storia
 Mono è un’implementazione opensource del .NET
Framework
 E’ composto essenzialmente da un Common
Language Runtime e dalle Base Class Library
 E’ legale e supportato
 Sfrutta gli standard ECMA pubblicati da Microsoft sul
.NET Framework
 Sfrutta il codice rilasciato con license opensource
sempre da Microsoft
 Disponibile per sistemi operativi Windows, Mac OS X,
Linux, Solaris, ecc…
Un po’ di storia
 Inizialmente sviluppato da Miguel
de Icaza (GNOME, Novell, Ximian)
 Oggi è il core business di Xamarin
 Mono 1.0 – 2004
 C# 1.0, .NET 1.1
 Mono 2.0 – 2008
 C# 2.0, 3.0 e 4.0
 .NET 2.0, 3.0, 3.5 e 4.0
 ASP.NET, MVC
 Mono 3.0 – 2012 in beta
 C# 5.0, Async
Un po’ di storia
 Supporta tutto il .NET Framework tranne
 Windows Presentation Foundation
 Windows Workflow Foundation
 WCF è supportato solo per il sottoinsieme di Silverlight
(BasicBinding)
Monotouch
 Monotouch è la soluzione di Xamarin per lo sviluppo di
applicazioni native per iOS utilizzando C# e Mono
 iOS non consente il funzionamento di compilatori Just
In Time
 Monotouch si basa su un compilatore ahead-of-time
(AOT) che compila le applicazioni in linguaggio
assembly per processori ARM v6, v7 e v7s
 Monotouch espone la totalità dell’SDK CocoaTouch di
Apple come classi .NET
Monotouch
 Supporta i seguenti assembly del .NET Framework:
 System.dll / mscorlib.dll
 System.Core.dll
 System.Data.dll (ADO.NET)
 System.Data.Service.Client.dll (OData support)
 System.Json.dll
 System.Runtime.Serialization.dll
 System.ServiceModel.dll (WCF stack di Silverlight, senza parte server)
 System.ServiceModel.Web.dll
 System.Transactions.dll
 System.Web.Services
 System.Xml.dll
 System.Xml.Linq.dll
Monotouch
 Oltre ai propri seguenti assembly:
 monotouch.dll (CocoaTouch API)
 Mono.Data.Sqlite.dll (SQL Lite ADO.NET provider)
 Mono.Data.Tds.dll (supporto a SQL Server)
 Mono.Security.dll (API di crittografia)
 OpenTK.dll (OpenGL e OpenAL)
Monotouch
 Di cosa abbiamo bisogno?
 Di un Mac con Mac OS Lion (10.7) o Montain Lion (10.8)
 Xcode (SDK e IDE di sviluppo Apple)
 MonoDevelop (IDE di sviluppo Mono)
Monotouch
 Perché usare Monotouch?
Monotouch
 Perché usare Monotouch?
 Per sfruttare le proprie conoscenze in ambito .NET:
ADO.NET, WCF, Task Parallel Library, garbage
collection, ecc…
 Per utilizzare C#, un linguaggio molto più moderno e
potente di Objective C: lamba expression, LINQ, tipi
anonimi, eventi, ecc…
 Perché le app risultanti sono native né più né meno di
quelle sviluppate con XCode
Monotouch
 Perché usare Monotouch?
 E’ sviluppato attivamente: ad ogni nuova versione
dell’SDK Apple corrisponde entro 24/48 ore una nuova
versione di Monotouch
 E’ ampiamente supportato: Infragistics, Telerik, Shinobi,
ecc…
 E’ utilizzato da grandi nomi: Microsoft, National
Instrument
Monotouch
 Profiling: è possibile
utilizzare sia quello
integrato di Monodevelop
che quello di XCode
Demo
HELLO WORLD
Demo
DOTNETSIDE
Limitazioni
 Essendo Monotouch basato su un sottoinsieme di
.NET, tutti gli assembly di un progetto devono essere
compilati espressamente per Monotouch
(analogamente a quanto accade con Silverlight)
 Non è possibile utilizzare direttamente librerie di terze
parti native sviluppate in Objective C, ma esistono due
alternative:
 Farsi fornire la versione Monotouch 
 Costruirsi a mano le classi di interfacciamento 
Limitazioni
 Supporto limitato ai generics
 Niente metodi virtuali generici
 Niente classi generiche con P/Invoke
 Nessun supporto alla generazione dinamica di codice
 Niente System.Reflection.Emit
 Nessun supporto a COM
Costi
 Xcode, Mono e Monodevelop sono gratuiti
 Iscrizione all’Apple iOS Developer Program - $ 99
all’anno
 Guadagni
 30% va ad Apple
 70% allo sviluppatore
Costi
Sviluppo nativo vs web app
 Web app
 Potenzialmente si sviluppa una volta per supportare tutte
le piattaforme
 Riutilizzo delle skill dello sviluppo web
 HTML5 e CSS3 consentono di realizzare web app
complesse
 Native app
 Hanno accesso a tutte le potenzialità del sistema
operativo e del dispositivo
 Look and feel integrato con l’OS
 Massime prestazioni
Q&A
DOMANDE?
Riferimenti
 DotNetSide
www.dotnetside.org
 Il mio blog
www.vifani.com
 Mono
www.mono-project.com
 Monodevelop
monodevelop.com
 Xamarin
www.xamarin.com
 Apple Developer
developer.apple.com
GRAZIE 
Mobile development .net

Mobile development .net

  • 1.
    Writing apps for iOSwith .NET MOBILE DEVELOPMENT WITH .NET
  • 2.
    Chi sono  RaffaeleFanizzi  Membro di DotNetSide – www.dotnetside.org  Microsoft Certified Professional Developer – MCPD  Microsoft Certified Technical Specialist – MCTS  Email – vifani@gmail.com  Blog – www.vifani.com  LinkedIn – www.linkedin.com/in/raffaelefanizzi
  • 3.
    Agenda  Introduzione  Perchésviluppare per iOS ?  Un po’ di storia  Monotouch  Limitazioni e Costi  Sviluppo nativo vs web app  Q&A
  • 4.
    Introduzione  Il mondosta cambiando…
  • 5.
  • 6.
  • 7.
  • 8.
    Introduzione  Tra computer,tablet e smartphone, oltre il 50% dello share è in mano ai dispositivi portatili  Oltre il 15% delle pagine viste su internet è realizzato da tablet e smartphone  Gli smartphone hanno superato i telefoni cellulari
  • 9.
    Introduzione  Sviluppo software-> Un mondo sempre più specializzato  Quanti tipi di sviluppatori?  Desktop  Web  Mobile web  Enterprise  Database  Mobile  Embedded
  • 10.
    Introduzione  Quale futuroper chi conosce .NET?  Roseo per lo sviluppo  Desktop  Web  Web mobile  Enterprise  E per lo sviluppo mobile?
  • 11.
    Introduzione  Windows Phonesi sta facendo strada…  …ma nel frattempo sarebbe meglio sfruttare le competenze acquisite e sviluppare anche sulle altre piattaforme
  • 12.
    Introduzione  Fortunatamente pernoi esiste Mono, Monotouch e Mono for Android 
  • 13.
  • 14.
  • 15.
  • 16.
    Un po’ distoria  Mono è un’implementazione opensource del .NET Framework  E’ composto essenzialmente da un Common Language Runtime e dalle Base Class Library  E’ legale e supportato  Sfrutta gli standard ECMA pubblicati da Microsoft sul .NET Framework  Sfrutta il codice rilasciato con license opensource sempre da Microsoft  Disponibile per sistemi operativi Windows, Mac OS X, Linux, Solaris, ecc…
  • 17.
    Un po’ distoria  Inizialmente sviluppato da Miguel de Icaza (GNOME, Novell, Ximian)  Oggi è il core business di Xamarin  Mono 1.0 – 2004  C# 1.0, .NET 1.1  Mono 2.0 – 2008  C# 2.0, 3.0 e 4.0  .NET 2.0, 3.0, 3.5 e 4.0  ASP.NET, MVC  Mono 3.0 – 2012 in beta  C# 5.0, Async
  • 18.
    Un po’ distoria  Supporta tutto il .NET Framework tranne  Windows Presentation Foundation  Windows Workflow Foundation  WCF è supportato solo per il sottoinsieme di Silverlight (BasicBinding)
  • 19.
    Monotouch  Monotouch èla soluzione di Xamarin per lo sviluppo di applicazioni native per iOS utilizzando C# e Mono  iOS non consente il funzionamento di compilatori Just In Time  Monotouch si basa su un compilatore ahead-of-time (AOT) che compila le applicazioni in linguaggio assembly per processori ARM v6, v7 e v7s  Monotouch espone la totalità dell’SDK CocoaTouch di Apple come classi .NET
  • 20.
    Monotouch  Supporta iseguenti assembly del .NET Framework:  System.dll / mscorlib.dll  System.Core.dll  System.Data.dll (ADO.NET)  System.Data.Service.Client.dll (OData support)  System.Json.dll  System.Runtime.Serialization.dll  System.ServiceModel.dll (WCF stack di Silverlight, senza parte server)  System.ServiceModel.Web.dll  System.Transactions.dll  System.Web.Services  System.Xml.dll  System.Xml.Linq.dll
  • 21.
    Monotouch  Oltre aipropri seguenti assembly:  monotouch.dll (CocoaTouch API)  Mono.Data.Sqlite.dll (SQL Lite ADO.NET provider)  Mono.Data.Tds.dll (supporto a SQL Server)  Mono.Security.dll (API di crittografia)  OpenTK.dll (OpenGL e OpenAL)
  • 22.
    Monotouch  Di cosaabbiamo bisogno?  Di un Mac con Mac OS Lion (10.7) o Montain Lion (10.8)  Xcode (SDK e IDE di sviluppo Apple)  MonoDevelop (IDE di sviluppo Mono)
  • 23.
  • 24.
    Monotouch  Perché usareMonotouch?  Per sfruttare le proprie conoscenze in ambito .NET: ADO.NET, WCF, Task Parallel Library, garbage collection, ecc…  Per utilizzare C#, un linguaggio molto più moderno e potente di Objective C: lamba expression, LINQ, tipi anonimi, eventi, ecc…  Perché le app risultanti sono native né più né meno di quelle sviluppate con XCode
  • 25.
    Monotouch  Perché usareMonotouch?  E’ sviluppato attivamente: ad ogni nuova versione dell’SDK Apple corrisponde entro 24/48 ore una nuova versione di Monotouch  E’ ampiamente supportato: Infragistics, Telerik, Shinobi, ecc…  E’ utilizzato da grandi nomi: Microsoft, National Instrument
  • 26.
    Monotouch  Profiling: èpossibile utilizzare sia quello integrato di Monodevelop che quello di XCode
  • 27.
  • 28.
  • 29.
    Limitazioni  Essendo Monotouchbasato su un sottoinsieme di .NET, tutti gli assembly di un progetto devono essere compilati espressamente per Monotouch (analogamente a quanto accade con Silverlight)  Non è possibile utilizzare direttamente librerie di terze parti native sviluppate in Objective C, ma esistono due alternative:  Farsi fornire la versione Monotouch   Costruirsi a mano le classi di interfacciamento 
  • 30.
    Limitazioni  Supporto limitatoai generics  Niente metodi virtuali generici  Niente classi generiche con P/Invoke  Nessun supporto alla generazione dinamica di codice  Niente System.Reflection.Emit  Nessun supporto a COM
  • 31.
    Costi  Xcode, Monoe Monodevelop sono gratuiti  Iscrizione all’Apple iOS Developer Program - $ 99 all’anno  Guadagni  30% va ad Apple  70% allo sviluppatore
  • 32.
  • 33.
    Sviluppo nativo vsweb app  Web app  Potenzialmente si sviluppa una volta per supportare tutte le piattaforme  Riutilizzo delle skill dello sviluppo web  HTML5 e CSS3 consentono di realizzare web app complesse  Native app  Hanno accesso a tutte le potenzialità del sistema operativo e del dispositivo  Look and feel integrato con l’OS  Massime prestazioni
  • 34.
  • 35.
    Riferimenti  DotNetSide www.dotnetside.org  Ilmio blog www.vifani.com  Mono www.mono-project.com  Monodevelop monodevelop.com  Xamarin www.xamarin.com  Apple Developer developer.apple.com
  • 36.