2. 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
3. Agenda
Introduzione
Perché sviluppare per iOS ?
Un po’ di storia
Monotouch
Limitazioni e Costi
Sviluppo nativo vs web app
Q&A
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 futuro per chi conosce .NET?
Roseo per lo sviluppo
Desktop
Web
Web mobile
Enterprise
E per lo sviluppo mobile?
11. Introduzione
Windows Phone si sta facendo strada…
…ma nel frattempo sarebbe meglio sfruttare le
competenze acquisite e sviluppare anche sulle altre
piattaforme
16. 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…
17. 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
18. 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)
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 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
21. 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)
22. 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)
24. 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
25. 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
26. Monotouch
Profiling: è possibile
utilizzare sia quello
integrato di Monodevelop
che quello di XCode
29. 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
30. 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
31. Costi
Xcode, Mono e Monodevelop sono gratuiti
Iscrizione all’Apple iOS Developer Program - $ 99
all’anno
Guadagni
30% va ad Apple
70% allo sviluppatore
33. 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