SlideShare ist ein Scribd-Unternehmen logo
1 von 37
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

Weitere ähnliche Inhalte

Was ist angesagt?

Introduzione alle app Windows Universal
Introduzione alle app Windows UniversalIntroduzione alle app Windows Universal
Introduzione alle app Windows UniversalAlessandro Scardova
 
Costruire app per WinPhone, iOS e Android con C# e Xamarin
Costruire app per WinPhone, iOS e Android con C# e XamarinCostruire app per WinPhone, iOS e Android con C# e Xamarin
Costruire app per WinPhone, iOS e Android con C# e XamarinFabio Cozzolino
 
Community Days 2015 Introduzione a Xamarin
Community Days 2015  Introduzione a XamarinCommunity Days 2015  Introduzione a Xamarin
Community Days 2015 Introduzione a XamarinDan Ardelean
 
Sviluppo di app cross platform con xamarin e C#
Sviluppo di app cross platform con xamarin e C#Sviluppo di app cross platform con xamarin e C#
Sviluppo di app cross platform con xamarin e C#Dan Ardelean
 
Sviluppo di applicazioni mobile con PhoneGap
Sviluppo di applicazioni mobile con PhoneGapSviluppo di applicazioni mobile con PhoneGap
Sviluppo di applicazioni mobile con PhoneGapDotNetMarche
 
Italian C++ MeetUp - 24/10/2015
Italian C++ MeetUp - 24/10/2015Italian C++ MeetUp - 24/10/2015
Italian C++ MeetUp - 24/10/2015Gaetano Paternò
 
Flash Platform su dispositivi mobili
Flash Platform su dispositivi mobiliFlash Platform su dispositivi mobili
Flash Platform su dispositivi mobililuca mezzalira
 
Introduction to Xamarin
Introduction to XamarinIntroduction to Xamarin
Introduction to XamarinGuido Magrin
 
Mobile platforms development overview
Mobile platforms development overviewMobile platforms development overview
Mobile platforms development overviewAlfredo Morresi
 
Real Solutions Day - Cross-Platform con Xamarin
Real Solutions Day - Cross-Platform con XamarinReal Solutions Day - Cross-Platform con Xamarin
Real Solutions Day - Cross-Platform con XamarinRiccardo Cappello
 
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...Gaetano Paternò
 
Introduzione Xamarin
Introduzione XamarinIntroduzione Xamarin
Introduzione XamarinAndrea Tosato
 
App mobile cross-platform con Xamarin
App mobile cross-platform con XamarinApp mobile cross-platform con Xamarin
App mobile cross-platform con XamarinMichele Aponte
 
Iniziare a sviluppare su mobile con Android
Iniziare a sviluppare su mobile con AndroidIniziare a sviluppare su mobile con Android
Iniziare a sviluppare su mobile con AndroidFrancesco Florio
 
Meet no Neet: presentazione del progetto App per organizzare eventi
Meet no Neet: presentazione del progetto App per organizzare eventiMeet no Neet: presentazione del progetto App per organizzare eventi
Meet no Neet: presentazione del progetto App per organizzare eventiFondazione Mondo Digitale
 
Smau Napoli 2016 - Michele Aponte, Microsoft
Smau Napoli 2016 - Michele Aponte, MicrosoftSmau Napoli 2016 - Michele Aponte, Microsoft
Smau Napoli 2016 - Michele Aponte, MicrosoftSMAU
 

Was ist angesagt? (20)

Introduzione alle app Windows Universal
Introduzione alle app Windows UniversalIntroduzione alle app Windows Universal
Introduzione alle app Windows Universal
 
Costruire app per WinPhone, iOS e Android con C# e Xamarin
Costruire app per WinPhone, iOS e Android con C# e XamarinCostruire app per WinPhone, iOS e Android con C# e Xamarin
Costruire app per WinPhone, iOS e Android con C# e Xamarin
 
Introduzione a Xamarin
Introduzione a XamarinIntroduzione a Xamarin
Introduzione a Xamarin
 
Community Days 2015 Introduzione a Xamarin
Community Days 2015  Introduzione a XamarinCommunity Days 2015  Introduzione a Xamarin
Community Days 2015 Introduzione a Xamarin
 
Sviluppo di app cross platform con xamarin e C#
Sviluppo di app cross platform con xamarin e C#Sviluppo di app cross platform con xamarin e C#
Sviluppo di app cross platform con xamarin e C#
 
Sviluppo di applicazioni mobile con PhoneGap
Sviluppo di applicazioni mobile con PhoneGapSviluppo di applicazioni mobile con PhoneGap
Sviluppo di applicazioni mobile con PhoneGap
 
Italian C++ MeetUp - 24/10/2015
Italian C++ MeetUp - 24/10/2015Italian C++ MeetUp - 24/10/2015
Italian C++ MeetUp - 24/10/2015
 
Flash Platform su dispositivi mobili
Flash Platform su dispositivi mobiliFlash Platform su dispositivi mobili
Flash Platform su dispositivi mobili
 
MonoTouch, un anno dopo
MonoTouch, un anno dopoMonoTouch, un anno dopo
MonoTouch, un anno dopo
 
Introduction to Xamarin
Introduction to XamarinIntroduction to Xamarin
Introduction to Xamarin
 
Mobile platforms development overview
Mobile platforms development overviewMobile platforms development overview
Mobile platforms development overview
 
Real Solutions Day - Cross-Platform con Xamarin
Real Solutions Day - Cross-Platform con XamarinReal Solutions Day - Cross-Platform con Xamarin
Real Solutions Day - Cross-Platform con Xamarin
 
Reportage Delphi Day 2012
Reportage Delphi Day 2012Reportage Delphi Day 2012
Reportage Delphi Day 2012
 
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
Improve mobile development with Visual Studio 2017 for Mac & Visual Studio Te...
 
Intro xamarin forms
Intro xamarin formsIntro xamarin forms
Intro xamarin forms
 
Introduzione Xamarin
Introduzione XamarinIntroduzione Xamarin
Introduzione Xamarin
 
App mobile cross-platform con Xamarin
App mobile cross-platform con XamarinApp mobile cross-platform con Xamarin
App mobile cross-platform con Xamarin
 
Iniziare a sviluppare su mobile con Android
Iniziare a sviluppare su mobile con AndroidIniziare a sviluppare su mobile con Android
Iniziare a sviluppare su mobile con Android
 
Meet no Neet: presentazione del progetto App per organizzare eventi
Meet no Neet: presentazione del progetto App per organizzare eventiMeet no Neet: presentazione del progetto App per organizzare eventi
Meet no Neet: presentazione del progetto App per organizzare eventi
 
Smau Napoli 2016 - Michele Aponte, Microsoft
Smau Napoli 2016 - Michele Aponte, MicrosoftSmau Napoli 2016 - Michele Aponte, Microsoft
Smau Napoli 2016 - Michele Aponte, Microsoft
 

Ähnlich wie Mobile development .net

Programmiamo iPhone e iPad (e non solo!) con MonoTouch
Programmiamo iPhone e iPad (e non solo!) con MonoTouchProgrammiamo iPhone e iPad (e non solo!) con MonoTouch
Programmiamo iPhone e iPad (e non solo!) con MonoTouchStefano Ottaviani
 
Meego Italian Day 2011 - Francesco Baldassarri (1)
Meego Italian Day 2011 - Francesco Baldassarri (1)Meego Italian Day 2011 - Francesco Baldassarri (1)
Meego Italian Day 2011 - Francesco Baldassarri (1)Francesco Baldassarri
 
Future Decoded Roma - Visual Studio, Cordova e Ionic Framework to create X-...
Future Decoded Roma  - Visual Studio, Cordova e Ionic Framework  to create X-...Future Decoded Roma  - Visual Studio, Cordova e Ionic Framework  to create X-...
Future Decoded Roma - Visual Studio, Cordova e Ionic Framework to create X-...Michele Aponte
 
Smau milano 2012 arena social media davide-senatore
Smau milano 2012   arena social media davide-senatoreSmau milano 2012   arena social media davide-senatore
Smau milano 2012 arena social media davide-senatoreSMAU
 
Club degli sviluppatori: Sencha Touch - 1°parte
Club degli sviluppatori: Sencha Touch - 1°parteClub degli sviluppatori: Sencha Touch - 1°parte
Club degli sviluppatori: Sencha Touch - 1°parteGiuseppe Toto
 
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
 Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progettoMicrosoft Mobile Developer
 
Flutter: Google alla conquista del mobile multi piattaforma
Flutter: Google alla conquista del mobile multi piattaformaFlutter: Google alla conquista del mobile multi piattaforma
Flutter: Google alla conquista del mobile multi piattaformaCommit University
 
Meetup DotNetCode A.I. Bot Framework and Azure Functions
Meetup DotNetCode A.I. Bot Framework and Azure FunctionsMeetup DotNetCode A.I. Bot Framework and Azure Functions
Meetup DotNetCode A.I. Bot Framework and Azure Functionsdotnetcode
 
L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1
L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1
L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1codeblock
 
Sviluppare applicazioni mobile native in html e java script
Sviluppare applicazioni mobile native in html e java scriptSviluppare applicazioni mobile native in html e java script
Sviluppare applicazioni mobile native in html e java scriptFabio Franzini
 
Roadmap pubblicazione app WP7 - Community Tour 2011 DotNetUmbria
Roadmap pubblicazione app WP7 - Community Tour 2011 DotNetUmbriaRoadmap pubblicazione app WP7 - Community Tour 2011 DotNetUmbria
Roadmap pubblicazione app WP7 - Community Tour 2011 DotNetUmbriaFabrizio Bernabei
 
Ionic Cordova vs React Native
Ionic Cordova vs React NativeIonic Cordova vs React Native
Ionic Cordova vs React NativeAntonio Gallo
 
Mobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web DevelopersMobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web Developerssparkfabrik
 
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...Marco Parenzan
 
Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5Gabriele Gaggi
 
Whymca - Sviluppare applicazioni mobile native in html e javascript
Whymca - Sviluppare applicazioni mobile native in html e javascriptWhymca - Sviluppare applicazioni mobile native in html e javascript
Whymca - Sviluppare applicazioni mobile native in html e javascriptFabio Franzini
 

Ähnlich wie Mobile development .net (20)

Programmiamo iPhone e iPad (e non solo!) con MonoTouch
Programmiamo iPhone e iPad (e non solo!) con MonoTouchProgrammiamo iPhone e iPad (e non solo!) con MonoTouch
Programmiamo iPhone e iPad (e non solo!) con MonoTouch
 
Meego Italian Day 2011 - Francesco Baldassarri (1)
Meego Italian Day 2011 - Francesco Baldassarri (1)Meego Italian Day 2011 - Francesco Baldassarri (1)
Meego Italian Day 2011 - Francesco Baldassarri (1)
 
Future Decoded Roma - Visual Studio, Cordova e Ionic Framework to create X-...
Future Decoded Roma  - Visual Studio, Cordova e Ionic Framework  to create X-...Future Decoded Roma  - Visual Studio, Cordova e Ionic Framework  to create X-...
Future Decoded Roma - Visual Studio, Cordova e Ionic Framework to create X-...
 
Wp7 to the max!
Wp7 to the max!Wp7 to the max!
Wp7 to the max!
 
Android Workshop
Android WorkshopAndroid Workshop
Android Workshop
 
Smau milano 2012 arena social media davide-senatore
Smau milano 2012   arena social media davide-senatoreSmau milano 2012   arena social media davide-senatore
Smau milano 2012 arena social media davide-senatore
 
Visual studio code
Visual studio codeVisual studio code
Visual studio code
 
Club degli sviluppatori: Sencha Touch - 1°parte
Club degli sviluppatori: Sencha Touch - 1°parteClub degli sviluppatori: Sencha Touch - 1°parte
Club degli sviluppatori: Sencha Touch - 1°parte
 
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
 Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
 
Flutter: Google alla conquista del mobile multi piattaforma
Flutter: Google alla conquista del mobile multi piattaformaFlutter: Google alla conquista del mobile multi piattaforma
Flutter: Google alla conquista del mobile multi piattaforma
 
Meetup DotNetCode A.I. Bot Framework and Azure Functions
Meetup DotNetCode A.I. Bot Framework and Azure FunctionsMeetup DotNetCode A.I. Bot Framework and Azure Functions
Meetup DotNetCode A.I. Bot Framework and Azure Functions
 
L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1
L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1
L'EVOLUZIONE E LE NOVITÀ DI WINDOWS PHONE 8.1
 
Sviluppare applicazioni mobile native in html e java script
Sviluppare applicazioni mobile native in html e java scriptSviluppare applicazioni mobile native in html e java script
Sviluppare applicazioni mobile native in html e java script
 
Roadmap pubblicazione app WP7 - Community Tour 2011 DotNetUmbria
Roadmap pubblicazione app WP7 - Community Tour 2011 DotNetUmbriaRoadmap pubblicazione app WP7 - Community Tour 2011 DotNetUmbria
Roadmap pubblicazione app WP7 - Community Tour 2011 DotNetUmbria
 
Ionic Cordova vs React Native
Ionic Cordova vs React NativeIonic Cordova vs React Native
Ionic Cordova vs React Native
 
Mobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web DevelopersMobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web Developers
 
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
 
Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5
 
Whymca - Sviluppare applicazioni mobile native in html e javascript
Whymca - Sviluppare applicazioni mobile native in html e javascriptWhymca - Sviluppare applicazioni mobile native in html e javascript
Whymca - Sviluppare applicazioni mobile native in html e javascript
 
Introduzione a .Net Core
Introduzione a .Net CoreIntroduzione a .Net Core
Introduzione a .Net Core
 

Mehr von Raffaele Fanizzi

Web Development with Visual Studio 2012
Web Development with Visual Studio 2012Web Development with Visual Studio 2012
Web Development with Visual Studio 2012Raffaele Fanizzi
 
Async Development con Visual Studio 2012
Async Development con Visual Studio 2012Async Development con Visual Studio 2012
Async Development con Visual Studio 2012Raffaele Fanizzi
 
Push Notification: come rendere vive le app su Windows Phone
Push Notification: come rendere vive le app su Windows PhonePush Notification: come rendere vive le app su Windows Phone
Push Notification: come rendere vive le app su Windows PhoneRaffaele Fanizzi
 
ADO.NET Entity Framework 4
ADO.NET Entity Framework 4ADO.NET Entity Framework 4
ADO.NET Entity Framework 4Raffaele Fanizzi
 

Mehr von Raffaele Fanizzi (7)

Web Development with Visual Studio 2012
Web Development with Visual Studio 2012Web Development with Visual Studio 2012
Web Development with Visual Studio 2012
 
Async Development con Visual Studio 2012
Async Development con Visual Studio 2012Async Development con Visual Studio 2012
Async Development con Visual Studio 2012
 
Push Notification: come rendere vive le app su Windows Phone
Push Notification: come rendere vive le app su Windows PhonePush Notification: come rendere vive le app su Windows Phone
Push Notification: come rendere vive le app su Windows Phone
 
HTML5
HTML5HTML5
HTML5
 
Dependency Injection
Dependency InjectionDependency Injection
Dependency Injection
 
ADO.NET Entity Framework 4
ADO.NET Entity Framework 4ADO.NET Entity Framework 4
ADO.NET Entity Framework 4
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 

Mobile development .net

  • 1. Writing apps for iOS with .NET MOBILE DEVELOPMENT WITH .NET
  • 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
  • 4. Introduzione  Il mondo sta cambiando…
  • 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
  • 12. Introduzione  Fortunatamente per noi esiste Mono, Monotouch e Mono for Android 
  • 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
  • 32. Costi
  • 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
  • 35. 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