SlideShare a Scribd company logo
iOS WindowsAndroid
Objective-C /
Swift
Xcode
C#
Visual Studio
Java
Android Studio
 Logica di business duplicata
 Linguaggi e IDE diversi
 Diversi Team di Lavoro e applicazioni “non in linea”
 C# codebase
 100% accesso ad API native
 Performance ~ Sviluppo nativo
iOS C# UI Windows C# UIAndroid C# UI
Shared C# Mobile
Shared C# Mobile
Xamarin.Forms
 Xaml/C# UI codebase
 API di sistema astratte
 Performance < Xamarin.Native
Microsoft.Phone Microsoft.Networking Windows.Storage Windows.Foundation Microsoft.Devices
System.Data System.Windows System.Numerics System.Core System.ServiceModel
System.Net System System.IO System.Linq System.Xml
MapKit UIKit iBeacon CoreGraphics CoreMotion
System.Data System.Windows System.Numerics System.Core System.ServiceModel
System.Net System System.IO System.Linq System.Xml
Text-to-speech ActionBar Printing Framework Renderscript NFC
System.Data System.Windows System.Numerics System.Core System.ServiceModel
System.Net System System.IO System.Linq System.Xml
Visual Studio:
 Plugin ora integrato in Visual Studio
 Supporto ad Android, iOS e Windows Phone
Xamarin Studio (ora Visual Studio for Mac):
 Disponibile sia per Windows che per OS X
 Supporto ad Android e iOS (solo su OS X)
 Unico linguaggio di markup: XAML
 Controlli della UI tradotti in controlli nativi a Runtime
<TabbedPage />
 Supporto a binding e
commading
public void DoSomething()
{
#if WINDOWS_PHONE
//API di Windows Phone / UWP
#endif
#if __ANDROID__
//API di Android
#endif
#if __IOS__
//API di iOS
#endif
}
 Compilazione condizionale
 Nessuna DLL in fase di compilazione
 SP dipendente da progetti specifici Codice Poco comprensibile e testabile!
 Dependency Service
 PCL indipendente dai progetti specifici PCL testabile
 Subset meno ampio del .NET Framework
 DLL in fase di compilazione Overhead!
namespace SampleApp
{
public interface IGpsService
{
Task<Location> GetLocation();
}
}
[assembly: DependencyService(typeof(GpsService))]
namespace SampleApp.Droid
{
public class GpsService : IGpsService
{
// Native Implemetation...
}
}
 Design pattern architetturale ispirato a Model-View-Presenter (e MVC)
 ViewModel non conosce direttamente View
 Più View possono condividere lo stesso ViewModel
 View notifica e viene notificata attraverso Data Binding
 View notifica eventi tramite Comandi
Portabile!
Testabile!
Cognitive Services
SearchSpeech Language KnowledgeVision
0 Non-clipart
0 Non-LineDrawing
False
Clip ArtType
Line Drawing Type
Black & White Image
Content of Image:
Categories
AdultContent
Adult Score
Faces
[{ “name”: “people_swimming”, “score”: 0.099609375 }]
False
0.18533889949321747
[{ “age”: 27, “gender”: “Male”, “faceRectangle”:
{“left”: 472, “top”: 258, “width”: 199, “height”: 199}}]
Image Colors:
Dominant Color Background
Dominant Color Foreground
Dominant Colors
Accent Color
White
Grey
White
Blue
Type of Image:
JSON:
{
"language": "en",
"orientation": "Up",
"regions": [
{
"boundingBox": "41,77,918,440",
"lines": [
{
"boundingBox": "41,77,723,89",
"words": [
{
"boundingBox": "41,102,225,64",
"text": "LIFE"
},
{
"boundingBox": "356,89,94,62",
"text": "IS"
},
{
"boundingBox": "539,77,225,64",
"text": "LIKE"
}
...
Demo
http://bit.ly/2fv0VoDGitHub Repo:
http://bit.ly/1qk5ZkJVideo:

More Related Content

What's hot

Wasm and Blazor CDays keynote
Wasm and Blazor CDays keynoteWasm and Blazor CDays keynote
Wasm and Blazor CDays keynote
Nicolò Carandini
 
Community Days 2015 Introduzione a Xamarin
Community Days 2015  Introduzione a XamarinCommunity Days 2015  Introduzione a Xamarin
Community Days 2015 Introduzione a Xamarin
Dan Ardelean
 
Christmas greetings cards with blazor
Christmas greetings cards with blazorChristmas greetings cards with blazor
Christmas greetings cards with blazor
Nicolò Carandini
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimization
Andrea Dottor
 
Xamarin.Forms Introduction
Xamarin.Forms IntroductionXamarin.Forms Introduction
Xamarin.Forms Introduction
Guido Magrin
 
Integrazione con Visual Studio Online
Integrazione con Visual Studio OnlineIntegrazione con Visual Studio Online
Integrazione con Visual Studio Online
Davide Benvegnù
 
Progettare in Team per il Responsive Web Design
Progettare in Team per il Responsive Web DesignProgettare in Team per il Responsive Web Design
Progettare in Team per il Responsive Web Design
Salvatore Paone
 
Milano Chatbots Meetup - Vittorio Banfi - Bot Design - Codemotion Milan 2016
Milano Chatbots Meetup - Vittorio Banfi - Bot Design - Codemotion Milan 2016 Milano Chatbots Meetup - Vittorio Banfi - Bot Design - Codemotion Milan 2016
Milano Chatbots Meetup - Vittorio Banfi - Bot Design - Codemotion Milan 2016
Codemotion
 
Angular and beyond
Angular and beyondAngular and beyond
Angular and beyond
Michele Aponte
 
Sviluppo di soluzioni embedded moderne con .NET Micro Framework by Lorenzo Ma...
Sviluppo di soluzioni embedded moderne con .NET Micro Framework by Lorenzo Ma...Sviluppo di soluzioni embedded moderne con .NET Micro Framework by Lorenzo Ma...
Sviluppo di soluzioni embedded moderne con .NET Micro Framework by Lorenzo Ma...
Codemotion
 
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaMulti-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
Andrea Dottor
 
UI Composition - Prism
UI Composition - PrismUI Composition - Prism
UI Composition - Prism
DotNetMarche
 
Intro xamarin forms
Intro xamarin formsIntro xamarin forms
Intro xamarin forms
Nicolò Carandini
 

What's hot (13)

Wasm and Blazor CDays keynote
Wasm and Blazor CDays keynoteWasm and Blazor CDays keynote
Wasm and Blazor CDays keynote
 
Community Days 2015 Introduzione a Xamarin
Community Days 2015  Introduzione a XamarinCommunity Days 2015  Introduzione a Xamarin
Community Days 2015 Introduzione a Xamarin
 
Christmas greetings cards with blazor
Christmas greetings cards with blazorChristmas greetings cards with blazor
Christmas greetings cards with blazor
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimization
 
Xamarin.Forms Introduction
Xamarin.Forms IntroductionXamarin.Forms Introduction
Xamarin.Forms Introduction
 
Integrazione con Visual Studio Online
Integrazione con Visual Studio OnlineIntegrazione con Visual Studio Online
Integrazione con Visual Studio Online
 
Progettare in Team per il Responsive Web Design
Progettare in Team per il Responsive Web DesignProgettare in Team per il Responsive Web Design
Progettare in Team per il Responsive Web Design
 
Milano Chatbots Meetup - Vittorio Banfi - Bot Design - Codemotion Milan 2016
Milano Chatbots Meetup - Vittorio Banfi - Bot Design - Codemotion Milan 2016 Milano Chatbots Meetup - Vittorio Banfi - Bot Design - Codemotion Milan 2016
Milano Chatbots Meetup - Vittorio Banfi - Bot Design - Codemotion Milan 2016
 
Angular and beyond
Angular and beyondAngular and beyond
Angular and beyond
 
Sviluppo di soluzioni embedded moderne con .NET Micro Framework by Lorenzo Ma...
Sviluppo di soluzioni embedded moderne con .NET Micro Framework by Lorenzo Ma...Sviluppo di soluzioni embedded moderne con .NET Micro Framework by Lorenzo Ma...
Sviluppo di soluzioni embedded moderne con .NET Micro Framework by Lorenzo Ma...
 
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaMulti-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
 
UI Composition - Prism
UI Composition - PrismUI Composition - Prism
UI Composition - Prism
 
Intro xamarin forms
Intro xamarin formsIntro xamarin forms
Intro xamarin forms
 

Similar to Xamarin & Cognitive Services Slides

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
Gabriele Gaggi
 
Alessandro Forte - Piattaforma Android
Alessandro Forte - Piattaforma AndroidAlessandro Forte - Piattaforma Android
Alessandro Forte - Piattaforma Android
Alessandro Forte
 
Introduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidIntroduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile Android
Open Makers Italy
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele Mondello
Daniele Mondello
 
Federico Massi.it - Intro alle app mobile Cordova
Federico Massi.it - Intro alle app mobile CordovaFederico Massi.it - Intro alle app mobile Cordova
Federico Massi.it - Intro alle app mobile Cordova
Federico Massi
 
Flash Platform su dispositivi mobili
Flash Platform su dispositivi mobiliFlash Platform su dispositivi mobili
Flash Platform su dispositivi mobili
luca mezzalira
 
Webcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio OnlineWebcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio Online
Davide Benvegnù
 
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
Commit University
 
MVVMCross da Windows Phone a Windows 8 passando per Android e iOS
MVVMCross da Windows Phone a Windows 8 passando per Android e iOSMVVMCross da Windows Phone a Windows 8 passando per Android e iOS
MVVMCross da Windows Phone a Windows 8 passando per Android e iOSDan Ardelean
 
Presentazione CERT-CHECK
Presentazione CERT-CHECKPresentazione CERT-CHECK
Presentazione CERT-CHECK
Sergio Shevchenko
 
Italian C++ MeetUp - 24/10/2015
Italian C++ MeetUp - 24/10/2015Italian C++ MeetUp - 24/10/2015
Italian C++ MeetUp - 24/10/2015
Gaetano Paternò
 
01 Android - Introduction
01   Android - Introduction01   Android - Introduction
01 Android - Introduction
spawn150
 
Continous Delivery & HQ Code
Continous Delivery & HQ CodeContinous Delivery & HQ Code
Continous Delivery & HQ Code
Daniele Mondello
 
Meetup ASP.NET Core 2 e Docker
Meetup ASP.NET Core 2 e Docker Meetup ASP.NET Core 2 e Docker
Meetup ASP.NET Core 2 e Docker
dotnetcode
 
ASP.NET Core 2 e Docker
ASP.NET Core 2 e DockerASP.NET Core 2 e Docker
ASP.NET Core 2 e Docker
Luca Congiu
 
Introduzione Xamarin
Introduzione XamarinIntroduzione Xamarin
Introduzione Xamarin
Andrea Tosato
 
Continuous Integration e High Quality Code
Continuous Integration e High Quality CodeContinuous Integration e High Quality Code
Continuous Integration e High Quality Code
Daniele Mondello
 
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di MilanoWorkshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Gabriele Gaggi
 
Niccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTNiccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWT
firenze-gtug
 

Similar to Xamarin & Cognitive Services Slides (20)

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
 
INTRO TO XAMARIN
INTRO TO XAMARININTRO TO XAMARIN
INTRO TO XAMARIN
 
Alessandro Forte - Piattaforma Android
Alessandro Forte - Piattaforma AndroidAlessandro Forte - Piattaforma Android
Alessandro Forte - Piattaforma Android
 
Introduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidIntroduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile Android
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele Mondello
 
Federico Massi.it - Intro alle app mobile Cordova
Federico Massi.it - Intro alle app mobile CordovaFederico Massi.it - Intro alle app mobile Cordova
Federico Massi.it - Intro alle app mobile Cordova
 
Flash Platform su dispositivi mobili
Flash Platform su dispositivi mobiliFlash Platform su dispositivi mobili
Flash Platform su dispositivi mobili
 
Webcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio OnlineWebcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio Online
 
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
 
MVVMCross da Windows Phone a Windows 8 passando per Android e iOS
MVVMCross da Windows Phone a Windows 8 passando per Android e iOSMVVMCross da Windows Phone a Windows 8 passando per Android e iOS
MVVMCross da Windows Phone a Windows 8 passando per Android e iOS
 
Presentazione CERT-CHECK
Presentazione CERT-CHECKPresentazione CERT-CHECK
Presentazione CERT-CHECK
 
Italian C++ MeetUp - 24/10/2015
Italian C++ MeetUp - 24/10/2015Italian C++ MeetUp - 24/10/2015
Italian C++ MeetUp - 24/10/2015
 
01 Android - Introduction
01   Android - Introduction01   Android - Introduction
01 Android - Introduction
 
Continous Delivery & HQ Code
Continous Delivery & HQ CodeContinous Delivery & HQ Code
Continous Delivery & HQ Code
 
Meetup ASP.NET Core 2 e Docker
Meetup ASP.NET Core 2 e Docker Meetup ASP.NET Core 2 e Docker
Meetup ASP.NET Core 2 e Docker
 
ASP.NET Core 2 e Docker
ASP.NET Core 2 e DockerASP.NET Core 2 e Docker
ASP.NET Core 2 e Docker
 
Introduzione Xamarin
Introduzione XamarinIntroduzione Xamarin
Introduzione Xamarin
 
Continuous Integration e High Quality Code
Continuous Integration e High Quality CodeContinuous Integration e High Quality Code
Continuous Integration e High Quality Code
 
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di MilanoWorkshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
 
Niccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTNiccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWT
 

Xamarin & Cognitive Services Slides

  • 1.
  • 2.
  • 3. iOS WindowsAndroid Objective-C / Swift Xcode C# Visual Studio Java Android Studio  Logica di business duplicata  Linguaggi e IDE diversi  Diversi Team di Lavoro e applicazioni “non in linea”
  • 4.  C# codebase  100% accesso ad API native  Performance ~ Sviluppo nativo iOS C# UI Windows C# UIAndroid C# UI Shared C# Mobile
  • 5. Shared C# Mobile Xamarin.Forms  Xaml/C# UI codebase  API di sistema astratte  Performance < Xamarin.Native
  • 6. Microsoft.Phone Microsoft.Networking Windows.Storage Windows.Foundation Microsoft.Devices System.Data System.Windows System.Numerics System.Core System.ServiceModel System.Net System System.IO System.Linq System.Xml
  • 7. MapKit UIKit iBeacon CoreGraphics CoreMotion System.Data System.Windows System.Numerics System.Core System.ServiceModel System.Net System System.IO System.Linq System.Xml
  • 8. Text-to-speech ActionBar Printing Framework Renderscript NFC System.Data System.Windows System.Numerics System.Core System.ServiceModel System.Net System System.IO System.Linq System.Xml
  • 9. Visual Studio:  Plugin ora integrato in Visual Studio  Supporto ad Android, iOS e Windows Phone Xamarin Studio (ora Visual Studio for Mac):  Disponibile sia per Windows che per OS X  Supporto ad Android e iOS (solo su OS X)
  • 10.  Unico linguaggio di markup: XAML  Controlli della UI tradotti in controlli nativi a Runtime <TabbedPage />  Supporto a binding e commading
  • 11. public void DoSomething() { #if WINDOWS_PHONE //API di Windows Phone / UWP #endif #if __ANDROID__ //API di Android #endif #if __IOS__ //API di iOS #endif }  Compilazione condizionale  Nessuna DLL in fase di compilazione  SP dipendente da progetti specifici Codice Poco comprensibile e testabile!
  • 12.  Dependency Service  PCL indipendente dai progetti specifici PCL testabile  Subset meno ampio del .NET Framework  DLL in fase di compilazione Overhead! namespace SampleApp { public interface IGpsService { Task<Location> GetLocation(); } } [assembly: DependencyService(typeof(GpsService))] namespace SampleApp.Droid { public class GpsService : IGpsService { // Native Implemetation... } }
  • 13.  Design pattern architetturale ispirato a Model-View-Presenter (e MVC)  ViewModel non conosce direttamente View  Più View possono condividere lo stesso ViewModel  View notifica e viene notificata attraverso Data Binding  View notifica eventi tramite Comandi Portabile! Testabile!
  • 14.
  • 16. 0 Non-clipart 0 Non-LineDrawing False Clip ArtType Line Drawing Type Black & White Image Content of Image: Categories AdultContent Adult Score Faces [{ “name”: “people_swimming”, “score”: 0.099609375 }] False 0.18533889949321747 [{ “age”: 27, “gender”: “Male”, “faceRectangle”: {“left”: 472, “top”: 258, “width”: 199, “height”: 199}}] Image Colors: Dominant Color Background Dominant Color Foreground Dominant Colors Accent Color White Grey White Blue Type of Image:
  • 17. JSON: { "language": "en", "orientation": "Up", "regions": [ { "boundingBox": "41,77,918,440", "lines": [ { "boundingBox": "41,77,723,89", "words": [ { "boundingBox": "41,102,225,64", "text": "LIFE" }, { "boundingBox": "356,89,94,62", "text": "IS" }, { "boundingBox": "539,77,225,64", "text": "LIKE" } ...
  • 19.