SlideShare a Scribd company logo
Tips & Tricks for Targeting Multiple Platforms with Portable Code
Presented by Sarah Dutkiewicz, Cleveland Tech Consulting
sarah@cletechconsulting.com
 Scenarios
 Tips & tricks for general multiple platform development
 Overview of Portable Class Library in .NET
 Experiences that cross from one device/platform to another
 Microsoft Account
 Office
 SkyDrive
 Xbox SmartGlass
 Formerly known as a Windows Live ID
 Combination of email address and password
 Unified login for Microsoft tools and other apps that ask for a Microsoft account
 Xbox LIVE
 Outlook.com
 SkyDrive
 Windows Phone
 Skype
 Data storage in the cloud
 Office in the browser – including Word,
Excel, PowerPoint, and OneNote
 Supported platforms include:
 Windows 8 (built-in)
 Windows Vista and later
 Mac OS X
 Mobile
 Windows Phone
 iPhone / iPad
 Android
 Found for Mac
 iAnnotate for iPad and Android
 SoundGecko for iPhone, Android, and Windows Phone
 Genius Scan+ for iPhone, iPad
 Remarks for iPad
 DocScan for iPhone and iPad
How to Develop For Multiple Devices/Platforms
 The better understanding of your audience,
the better understanding of which platforms
to target.
 The better understanding of which platforms
to target, the better view of what features are
available as an overall view and platform-
specific
 Be sure you understand what it is
you are building and what
platform(s) you are targeting.
 Write the code once and reuse it,
rather than writing the code in
multiple places and then realizing it
can be isolated into one library.
 Media – images, video
 Design aspects
 Models
 View Models
 Consumed APIs/RESTful services
 Web & Windows Phone – Perhaps HTML5, Silverlight, or C#
 Web,Windows Phone, and Windows Store – C#
 Web & general mobile – consider HTML5
 User Interface
 Business Logic
 Data Layer
 Some code is shareable without the portable class library
 Share the code that would be the same on each platform
 Typically not the UI
 Mostly as much business logic as possible
 Perhaps data layer
 Portable view models
 Validation
 Use design patterns that lend themselves to reusability
 Model-View-ViewModel (MVVM)
 Model-View-Controller (MVC)
 Use third party tools that support cross-platform development
 Appcelerator
 PhoneGap
 RhoMobile
 WidgetPad
 MoSync
 Visual Studio for targeting Windows
 MonoGame to help target many platforms:
 iOS
 Android
 Mac OS X
 Linux
 Windows 8 Metro
 Futures include:
 Windows Phone 8
 OUYA (Android-based gaming station)
 PlayStation Mobile
A look at Portable Class Libraries
 Desktop
 Web
 Phone
 Cloud
 Xbox
 Tablets
 .NET 4 and Silverlight 4
 Portable Library Tools for Visual Studio
2010
 Built-in Portable Library support in Visual
Studio 2012
 .NET Framework 4, Update 4.0.3 for the
.NET Framework 4, and .NET Framework
4.5
 .NET for Windows store apps
 Windows Phone 7 and higher (Windows
Phone SDK 8.0 for Windows Phone 8
support)
 Silverlight 4 and 5
 Xbox 360
 They must be shared across the target platforms you
selected.
 They must behave similarly across those platforms.
 They must not be candidates for deprecation.
 They must make sense in a portable environment,
especially when supporting members are not
portable.
 Portable Class Library support appears under
Version Information for a MSDN article
 Include shared business logic and data layer logic in the portable class libraries
 Use MVVM to write the apps
 Models and View Models can be shared across platforms and included in portable
libraries
 Platform-specific views
 Portable abstractions for non-portable functionality
 Implement the abstractions for each platform
 Use IoC or service locator to hook up implementations
• How to display information
• Written in XAML, HTML, some other markup language
• Platform-specific
View
• What information to display
• Flow of interaction
• Can be shared in a portable class library
View Model
• Data objects
• Business logic
• Can be shared in a portable class library
Model
Portable
Class Library
(Models &
View Models)
Windows
Store App
(Views)
Windows
Phone App
(Views)
Silverlight
(Views)
 Calling Non-Portable Members from a Portable Class
 Cannot call the non-portables directly
 Need to create an abstract class in the Portable Class Library project and use that class
from all portable code
 HelpDesk Application
 Metro Style App
 Windows Phone 7 App
 Download Source Code
 Store common logic in the portable class library
 Business logic, but not UI
 Use abstract classes to work with non-portable code
 For example, this may be applied to the data layer.
 Use the MVVM pattern to help minimize code.
 MVVM
 MVVM Light Toolkit (portable fork)
 MvvmCross
 IoC
 Autofac
 PortableIoC
 Ninject (portable fork)
 Microsoft.Composition
 Others
 Json.NET
 Metrolog
 Zlib.Portable
 Portable PRISM
 Write Portable Code
 Visual Studio Toolbox: Portable Class Libraries
 Portable Class Libraries Contrib
 Build 2012: Create Cross-platform Apps using Portable Class Libraries
 .NET 4.5: David Kean and Mircea Trofin – Portable Libraries
 Coding4Fun: Portable is as portable does… Maximizing code reuse via the magic of the
Portable Class Library
 Coding4Fun: Digging into your code with the free Microsoft Code Digger and the
power of Pex
 CodeProject: MonoGame Goes Portable
 How to Make Portable Class Libraries Work forYou
 Example: Disentanglement by Daniel Plaisted
 Portable Class Libraries and other portable libraries make it easy to develop for
multiple platforms.
 Know the lay of the land.
 Know your audience.
 Know your goals for your app.
 Keep your commonalities together.
 Develop accordingly.

More Related Content

What's hot

Lecture 1 introduction to vb.net
Lecture 1   introduction to vb.netLecture 1   introduction to vb.net
Lecture 1 introduction to vb.net
MUKALU STEVEN
 
01 intro to programming in .net
01   intro to programming in .net01   intro to programming in .net
01 intro to programming in .netFelisha Hosein
 
.Net framework
.Net framework.Net framework
.Net frameworkArun Pal
 
Vb6 vs vb.net....(visual basic) presentation
Vb6 vs vb.net....(visual basic) presentationVb6 vs vb.net....(visual basic) presentation
Vb6 vs vb.net....(visual basic) presentation
Iftikhar Ahmad
 
6.origins genesis of .net technology
6.origins genesis of .net technology6.origins genesis of .net technology
6.origins genesis of .net technology
Pramod Rathore
 
Dotnet Frameworks Version History
Dotnet Frameworks Version HistoryDotnet Frameworks Version History
Dotnet Frameworks Version History
voltaincx
 
Introduction to vb.net
Introduction to vb.netIntroduction to vb.net
Introduction to vb.net
suraj pandey
 
Overview of .Net Framework
Overview of .Net FrameworkOverview of .Net Framework
Overview of .Net Framework
Neha Singh
 
Ciklum .NET Saturday Relationship between .Net and WinRT
Ciklum .NET Saturday Relationship between .Net and WinRT Ciklum .NET Saturday Relationship between .Net and WinRT
Ciklum .NET Saturday Relationship between .Net and WinRT Ciklum Ukraine
 
Architecture of .net framework
Architecture of .net frameworkArchitecture of .net framework
Architecture of .net framework
Then Murugeshwari
 
c#.Net Windows application
c#.Net Windows application c#.Net Windows application
c#.Net Windows application veera
 
Introduction to .NET Programming
Introduction to .NET ProgrammingIntroduction to .NET Programming
Introduction to .NET Programming
Karthikeyan Mkr
 
Lesson 1 Understanding Dot Net Framework
Lesson 1   Understanding Dot Net FrameworkLesson 1   Understanding Dot Net Framework
Lesson 1 Understanding Dot Net Framework
nbaveja
 
Introduction of .net framework
Introduction of .net frameworkIntroduction of .net framework
Introduction of .net framework
Prognoz Technologies Pvt. Ltd.
 
.Net Overview -- Training (Lesson 1)
.Net Overview -- Training (Lesson 1).Net Overview -- Training (Lesson 1)
.Net Overview -- Training (Lesson 1)Rishi Kothari
 
Introduction to vb.net
Introduction to vb.netIntroduction to vb.net
Introduction to vb.net
Jaya Kumari
 
.Net overview|Introduction Of .net
.Net overview|Introduction Of .net.Net overview|Introduction Of .net
.Net overview|Introduction Of .net
pinky singh
 
The seven pillars of aspnet
The seven pillars of aspnetThe seven pillars of aspnet
The seven pillars of aspnet
Nethaji Naidu
 

What's hot (20)

Lecture 1 introduction to vb.net
Lecture 1   introduction to vb.netLecture 1   introduction to vb.net
Lecture 1 introduction to vb.net
 
01 intro to programming in .net
01   intro to programming in .net01   intro to programming in .net
01 intro to programming in .net
 
.Net framework
.Net framework.Net framework
.Net framework
 
Vb6 vs vb.net....(visual basic) presentation
Vb6 vs vb.net....(visual basic) presentationVb6 vs vb.net....(visual basic) presentation
Vb6 vs vb.net....(visual basic) presentation
 
6.origins genesis of .net technology
6.origins genesis of .net technology6.origins genesis of .net technology
6.origins genesis of .net technology
 
Dotnet Frameworks Version History
Dotnet Frameworks Version HistoryDotnet Frameworks Version History
Dotnet Frameworks Version History
 
Introduction to vb.net
Introduction to vb.netIntroduction to vb.net
Introduction to vb.net
 
Overview of .Net Framework
Overview of .Net FrameworkOverview of .Net Framework
Overview of .Net Framework
 
Introduction to .NET Framework
Introduction to .NET FrameworkIntroduction to .NET Framework
Introduction to .NET Framework
 
Ciklum .NET Saturday Relationship between .Net and WinRT
Ciklum .NET Saturday Relationship between .Net and WinRT Ciklum .NET Saturday Relationship between .Net and WinRT
Ciklum .NET Saturday Relationship between .Net and WinRT
 
Architecture of .net framework
Architecture of .net frameworkArchitecture of .net framework
Architecture of .net framework
 
c#.Net Windows application
c#.Net Windows application c#.Net Windows application
c#.Net Windows application
 
Visual Studio IDE
Visual Studio IDEVisual Studio IDE
Visual Studio IDE
 
Introduction to .NET Programming
Introduction to .NET ProgrammingIntroduction to .NET Programming
Introduction to .NET Programming
 
Lesson 1 Understanding Dot Net Framework
Lesson 1   Understanding Dot Net FrameworkLesson 1   Understanding Dot Net Framework
Lesson 1 Understanding Dot Net Framework
 
Introduction of .net framework
Introduction of .net frameworkIntroduction of .net framework
Introduction of .net framework
 
.Net Overview -- Training (Lesson 1)
.Net Overview -- Training (Lesson 1).Net Overview -- Training (Lesson 1)
.Net Overview -- Training (Lesson 1)
 
Introduction to vb.net
Introduction to vb.netIntroduction to vb.net
Introduction to vb.net
 
.Net overview|Introduction Of .net
.Net overview|Introduction Of .net.Net overview|Introduction Of .net
.Net overview|Introduction Of .net
 
The seven pillars of aspnet
The seven pillars of aspnetThe seven pillars of aspnet
The seven pillars of aspnet
 

Viewers also liked

Py Con 2009 Pumping Iron Into Python
Py Con 2009   Pumping Iron Into PythonPy Con 2009   Pumping Iron Into Python
Py Con 2009 Pumping Iron Into Python
Sarah Dutkiewicz
 
Keeping an Open Mind About Open Source
Keeping an Open Mind About Open SourceKeeping an Open Mind About Open Source
Keeping an Open Mind About Open Source
Sarah Dutkiewicz
 
Ignite Cleveland - "Marketing Your Events Online"
Ignite Cleveland - "Marketing Your Events Online"Ignite Cleveland - "Marketing Your Events Online"
Ignite Cleveland - "Marketing Your Events Online"
Sarah Dutkiewicz
 
Web Analytics
Web AnalyticsWeb Analytics
Web Analytics
Sarah Dutkiewicz
 
Untying the Knots of Web Dev with Internet Explorer
Untying the Knots of Web Dev with Internet Explorer Untying the Knots of Web Dev with Internet Explorer
Untying the Knots of Web Dev with Internet Explorer
Sarah Dutkiewicz
 
Unleashing the Power: A Lap Around PowerShell 3.0
Unleashing the Power: A Lap Around PowerShell 3.0Unleashing the Power: A Lap Around PowerShell 3.0
Unleashing the Power: A Lap Around PowerShell 3.0
Sarah Dutkiewicz
 
Keeping an Open Mind on Open Source
Keeping an Open Mind on Open SourceKeeping an Open Mind on Open Source
Keeping an Open Mind on Open Source
Sarah Dutkiewicz
 
Consumer Camp - Featuring Surface, Xbox, SkyDrive, and Win Phone
Consumer Camp - Featuring Surface, Xbox, SkyDrive, and Win PhoneConsumer Camp - Featuring Surface, Xbox, SkyDrive, and Win Phone
Consumer Camp - Featuring Surface, Xbox, SkyDrive, and Win Phone
Sarah Dutkiewicz
 

Viewers also liked (8)

Py Con 2009 Pumping Iron Into Python
Py Con 2009   Pumping Iron Into PythonPy Con 2009   Pumping Iron Into Python
Py Con 2009 Pumping Iron Into Python
 
Keeping an Open Mind About Open Source
Keeping an Open Mind About Open SourceKeeping an Open Mind About Open Source
Keeping an Open Mind About Open Source
 
Ignite Cleveland - "Marketing Your Events Online"
Ignite Cleveland - "Marketing Your Events Online"Ignite Cleveland - "Marketing Your Events Online"
Ignite Cleveland - "Marketing Your Events Online"
 
Web Analytics
Web AnalyticsWeb Analytics
Web Analytics
 
Untying the Knots of Web Dev with Internet Explorer
Untying the Knots of Web Dev with Internet Explorer Untying the Knots of Web Dev with Internet Explorer
Untying the Knots of Web Dev with Internet Explorer
 
Unleashing the Power: A Lap Around PowerShell 3.0
Unleashing the Power: A Lap Around PowerShell 3.0Unleashing the Power: A Lap Around PowerShell 3.0
Unleashing the Power: A Lap Around PowerShell 3.0
 
Keeping an Open Mind on Open Source
Keeping an Open Mind on Open SourceKeeping an Open Mind on Open Source
Keeping an Open Mind on Open Source
 
Consumer Camp - Featuring Surface, Xbox, SkyDrive, and Win Phone
Consumer Camp - Featuring Surface, Xbox, SkyDrive, and Win PhoneConsumer Camp - Featuring Surface, Xbox, SkyDrive, and Win Phone
Consumer Camp - Featuring Surface, Xbox, SkyDrive, and Win Phone
 

Similar to Three's Company - Writing for the Desktop, Browser, and Phone

Re-use Your Skills and Code to Expand the Reach of Your Apps with Silverlight
Re-use Your Skills and Code to Expand the Reach of Your Apps with SilverlightRe-use Your Skills and Code to Expand the Reach of Your Apps with Silverlight
Re-use Your Skills and Code to Expand the Reach of Your Apps with SilverlightFrank La Vigne
 
Mobile Devolpment Slides
Mobile Devolpment SlidesMobile Devolpment Slides
Mobile Devolpment Slides
Luke Angel
 
Training - Managing .NET/J2EE Projects
Training - Managing .NET/J2EE ProjectsTraining - Managing .NET/J2EE Projects
Training - Managing .NET/J2EE Projects
Shashank Banerjea
 
Building apps for WP8 and Win8
Building apps for WP8 and Win8Building apps for WP8 and Win8
Building apps for WP8 and Win8
Laurent Duveau
 
Mastering cross platform development
Mastering cross platform developmentMastering cross platform development
Mastering cross platform development
ioninksApp
 
.Net
.Net.Net
XAML: One Language to Rule Them All
XAML: One Language to Rule Them AllXAML: One Language to Rule Them All
XAML: One Language to Rule Them AllFrank La Vigne
 
NET Event - Migrating WinForm
NET Event - Migrating WinFormNET Event - Migrating WinForm
NET Event - Migrating WinForm
Raffaele Garofalo
 
Dot net-interview-questions-and-answers part i
Dot net-interview-questions-and-answers part iDot net-interview-questions-and-answers part i
Dot net-interview-questions-and-answers part i
Rakesh Joshi
 
Dot net-interview-questions-and-answers part i
Dot net-interview-questions-and-answers part iDot net-interview-questions-and-answers part i
Dot net-interview-questions-and-answers part i
Rakesh Joshi
 
Unit I- Introduction to .NET Framework.pdf
Unit I- Introduction to .NET Framework.pdfUnit I- Introduction to .NET Framework.pdf
Unit I- Introduction to .NET Framework.pdf
Ujwala Junghare
 
dotNET frameworks
dotNET frameworksdotNET frameworks
dotNET frameworks
nawal saad
 
Visual studio
Visual studioVisual studio
Visual studio
anupathak17jul
 
.Net framework
.Net framework.Net framework
.Net frameworkRaghu nath
 
1-.NET Introduction.pptx
1-.NET Introduction.pptx1-.NET Introduction.pptx
1-.NET Introduction.pptx
RKAggarwal6
 
Difference between .net and asp.net all you need to know
Difference between .net and asp.net  all you need to knowDifference between .net and asp.net  all you need to know
Difference between .net and asp.net all you need to know
sophiaaaddison
 
An Introduction to Universal Windows Apps
An Introduction to Universal Windows AppsAn Introduction to Universal Windows Apps
An Introduction to Universal Windows Apps
Ken Cenerelli
 
Dot net interview_questions
Dot net interview_questionsDot net interview_questions
Dot net interview_questions9292929292
 
DOT NET TRaining
DOT NET TRainingDOT NET TRaining
DOT NET TRaining
sunil kumar
 
Visual Studio 2012 introduction
Visual Studio  2012 introductionVisual Studio  2012 introduction
Visual Studio 2012 introduction
Nicko Satria Consulting
 

Similar to Three's Company - Writing for the Desktop, Browser, and Phone (20)

Re-use Your Skills and Code to Expand the Reach of Your Apps with Silverlight
Re-use Your Skills and Code to Expand the Reach of Your Apps with SilverlightRe-use Your Skills and Code to Expand the Reach of Your Apps with Silverlight
Re-use Your Skills and Code to Expand the Reach of Your Apps with Silverlight
 
Mobile Devolpment Slides
Mobile Devolpment SlidesMobile Devolpment Slides
Mobile Devolpment Slides
 
Training - Managing .NET/J2EE Projects
Training - Managing .NET/J2EE ProjectsTraining - Managing .NET/J2EE Projects
Training - Managing .NET/J2EE Projects
 
Building apps for WP8 and Win8
Building apps for WP8 and Win8Building apps for WP8 and Win8
Building apps for WP8 and Win8
 
Mastering cross platform development
Mastering cross platform developmentMastering cross platform development
Mastering cross platform development
 
.Net
.Net.Net
.Net
 
XAML: One Language to Rule Them All
XAML: One Language to Rule Them AllXAML: One Language to Rule Them All
XAML: One Language to Rule Them All
 
NET Event - Migrating WinForm
NET Event - Migrating WinFormNET Event - Migrating WinForm
NET Event - Migrating WinForm
 
Dot net-interview-questions-and-answers part i
Dot net-interview-questions-and-answers part iDot net-interview-questions-and-answers part i
Dot net-interview-questions-and-answers part i
 
Dot net-interview-questions-and-answers part i
Dot net-interview-questions-and-answers part iDot net-interview-questions-and-answers part i
Dot net-interview-questions-and-answers part i
 
Unit I- Introduction to .NET Framework.pdf
Unit I- Introduction to .NET Framework.pdfUnit I- Introduction to .NET Framework.pdf
Unit I- Introduction to .NET Framework.pdf
 
dotNET frameworks
dotNET frameworksdotNET frameworks
dotNET frameworks
 
Visual studio
Visual studioVisual studio
Visual studio
 
.Net framework
.Net framework.Net framework
.Net framework
 
1-.NET Introduction.pptx
1-.NET Introduction.pptx1-.NET Introduction.pptx
1-.NET Introduction.pptx
 
Difference between .net and asp.net all you need to know
Difference between .net and asp.net  all you need to knowDifference between .net and asp.net  all you need to know
Difference between .net and asp.net all you need to know
 
An Introduction to Universal Windows Apps
An Introduction to Universal Windows AppsAn Introduction to Universal Windows Apps
An Introduction to Universal Windows Apps
 
Dot net interview_questions
Dot net interview_questionsDot net interview_questions
Dot net interview_questions
 
DOT NET TRaining
DOT NET TRainingDOT NET TRaining
DOT NET TRaining
 
Visual Studio 2012 introduction
Visual Studio  2012 introductionVisual Studio  2012 introduction
Visual Studio 2012 introduction
 

More from Sarah Dutkiewicz

Passwordless Development using Azure Identity
Passwordless Development using Azure IdentityPasswordless Development using Azure Identity
Passwordless Development using Azure Identity
Sarah Dutkiewicz
 
Predicting Flights with Azure Databricks
Predicting Flights with Azure DatabricksPredicting Flights with Azure Databricks
Predicting Flights with Azure Databricks
Sarah Dutkiewicz
 
Azure DevOps for Developers
Azure DevOps for DevelopersAzure DevOps for Developers
Azure DevOps for Developers
Sarah Dutkiewicz
 
Azure DevOps for JavaScript Developers
Azure DevOps for JavaScript DevelopersAzure DevOps for JavaScript Developers
Azure DevOps for JavaScript Developers
Sarah Dutkiewicz
 
Azure DevOps for the Data Professional
Azure DevOps for the Data ProfessionalAzure DevOps for the Data Professional
Azure DevOps for the Data Professional
Sarah Dutkiewicz
 
Noodling with Data in Jupyter Notebook
Noodling with Data in Jupyter NotebookNoodling with Data in Jupyter Notebook
Noodling with Data in Jupyter Notebook
Sarah Dutkiewicz
 
Pairing and mobbing
Pairing and mobbingPairing and mobbing
Pairing and mobbing
Sarah Dutkiewicz
 
Intro to Python for C# Developers
Intro to Python for C# DevelopersIntro to Python for C# Developers
Intro to Python for C# Developers
Sarah Dutkiewicz
 
Introduction to Testing and TDD
Introduction to Testing and TDDIntroduction to Testing and TDD
Introduction to Testing and TDD
Sarah Dutkiewicz
 
Becoming a Servant Leader, Leading from the Trenches
Becoming a Servant Leader, Leading from the TrenchesBecoming a Servant Leader, Leading from the Trenches
Becoming a Servant Leader, Leading from the Trenches
Sarah Dutkiewicz
 
NEOISF - On Mentoring Future Techies
NEOISF - On Mentoring Future TechiesNEOISF - On Mentoring Future Techies
NEOISF - On Mentoring Future Techies
Sarah Dutkiewicz
 
Becoming a Servant Leader
Becoming a Servant LeaderBecoming a Servant Leader
Becoming a Servant Leader
Sarah Dutkiewicz
 
The Polyglot Data Scientist - Exploring R, Python, and SQL Server
The Polyglot Data Scientist - Exploring R, Python, and SQL ServerThe Polyglot Data Scientist - Exploring R, Python, and SQL Server
The Polyglot Data Scientist - Exploring R, Python, and SQL Server
Sarah Dutkiewicz
 
The importance of UX for Developers
The importance of UX for DevelopersThe importance of UX for Developers
The importance of UX for Developers
Sarah Dutkiewicz
 
The Impact of Women Trailblazers in Tech
The Impact of Women Trailblazers in TechThe Impact of Women Trailblazers in Tech
The Impact of Women Trailblazers in Tech
Sarah Dutkiewicz
 
Unstoppable Course Final Presentation
Unstoppable Course Final PresentationUnstoppable Course Final Presentation
Unstoppable Course Final Presentation
Sarah Dutkiewicz
 
Even More Tools for the Developer's UX Toolbelt
Even More Tools for the Developer's UX ToolbeltEven More Tools for the Developer's UX Toolbelt
Even More Tools for the Developer's UX Toolbelt
Sarah Dutkiewicz
 
History of Women in Tech
History of Women in TechHistory of Women in Tech
History of Women in Tech
Sarah Dutkiewicz
 
History of Women in Tech - Trivia
History of Women in Tech - TriviaHistory of Women in Tech - Trivia
History of Women in Tech - Trivia
Sarah Dutkiewicz
 
The UX Toolbelt for Developers
The UX Toolbelt for DevelopersThe UX Toolbelt for Developers
The UX Toolbelt for Developers
Sarah Dutkiewicz
 

More from Sarah Dutkiewicz (20)

Passwordless Development using Azure Identity
Passwordless Development using Azure IdentityPasswordless Development using Azure Identity
Passwordless Development using Azure Identity
 
Predicting Flights with Azure Databricks
Predicting Flights with Azure DatabricksPredicting Flights with Azure Databricks
Predicting Flights with Azure Databricks
 
Azure DevOps for Developers
Azure DevOps for DevelopersAzure DevOps for Developers
Azure DevOps for Developers
 
Azure DevOps for JavaScript Developers
Azure DevOps for JavaScript DevelopersAzure DevOps for JavaScript Developers
Azure DevOps for JavaScript Developers
 
Azure DevOps for the Data Professional
Azure DevOps for the Data ProfessionalAzure DevOps for the Data Professional
Azure DevOps for the Data Professional
 
Noodling with Data in Jupyter Notebook
Noodling with Data in Jupyter NotebookNoodling with Data in Jupyter Notebook
Noodling with Data in Jupyter Notebook
 
Pairing and mobbing
Pairing and mobbingPairing and mobbing
Pairing and mobbing
 
Intro to Python for C# Developers
Intro to Python for C# DevelopersIntro to Python for C# Developers
Intro to Python for C# Developers
 
Introduction to Testing and TDD
Introduction to Testing and TDDIntroduction to Testing and TDD
Introduction to Testing and TDD
 
Becoming a Servant Leader, Leading from the Trenches
Becoming a Servant Leader, Leading from the TrenchesBecoming a Servant Leader, Leading from the Trenches
Becoming a Servant Leader, Leading from the Trenches
 
NEOISF - On Mentoring Future Techies
NEOISF - On Mentoring Future TechiesNEOISF - On Mentoring Future Techies
NEOISF - On Mentoring Future Techies
 
Becoming a Servant Leader
Becoming a Servant LeaderBecoming a Servant Leader
Becoming a Servant Leader
 
The Polyglot Data Scientist - Exploring R, Python, and SQL Server
The Polyglot Data Scientist - Exploring R, Python, and SQL ServerThe Polyglot Data Scientist - Exploring R, Python, and SQL Server
The Polyglot Data Scientist - Exploring R, Python, and SQL Server
 
The importance of UX for Developers
The importance of UX for DevelopersThe importance of UX for Developers
The importance of UX for Developers
 
The Impact of Women Trailblazers in Tech
The Impact of Women Trailblazers in TechThe Impact of Women Trailblazers in Tech
The Impact of Women Trailblazers in Tech
 
Unstoppable Course Final Presentation
Unstoppable Course Final PresentationUnstoppable Course Final Presentation
Unstoppable Course Final Presentation
 
Even More Tools for the Developer's UX Toolbelt
Even More Tools for the Developer's UX ToolbeltEven More Tools for the Developer's UX Toolbelt
Even More Tools for the Developer's UX Toolbelt
 
History of Women in Tech
History of Women in TechHistory of Women in Tech
History of Women in Tech
 
History of Women in Tech - Trivia
History of Women in Tech - TriviaHistory of Women in Tech - Trivia
History of Women in Tech - Trivia
 
The UX Toolbelt for Developers
The UX Toolbelt for DevelopersThe UX Toolbelt for Developers
The UX Toolbelt for Developers
 

Recently uploaded

PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 

Recently uploaded (20)

PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 

Three's Company - Writing for the Desktop, Browser, and Phone

  • 1. Tips & Tricks for Targeting Multiple Platforms with Portable Code Presented by Sarah Dutkiewicz, Cleveland Tech Consulting sarah@cletechconsulting.com
  • 2.
  • 3.  Scenarios  Tips & tricks for general multiple platform development  Overview of Portable Class Library in .NET
  • 4.  Experiences that cross from one device/platform to another  Microsoft Account  Office  SkyDrive  Xbox SmartGlass
  • 5.  Formerly known as a Windows Live ID  Combination of email address and password  Unified login for Microsoft tools and other apps that ask for a Microsoft account  Xbox LIVE  Outlook.com  SkyDrive  Windows Phone  Skype
  • 6.
  • 7.  Data storage in the cloud  Office in the browser – including Word, Excel, PowerPoint, and OneNote  Supported platforms include:  Windows 8 (built-in)  Windows Vista and later  Mac OS X  Mobile  Windows Phone  iPhone / iPad  Android
  • 8.  Found for Mac  iAnnotate for iPad and Android  SoundGecko for iPhone, Android, and Windows Phone  Genius Scan+ for iPhone, iPad  Remarks for iPad  DocScan for iPhone and iPad
  • 9.
  • 10. How to Develop For Multiple Devices/Platforms
  • 11.  The better understanding of your audience, the better understanding of which platforms to target.  The better understanding of which platforms to target, the better view of what features are available as an overall view and platform- specific
  • 12.
  • 13.  Be sure you understand what it is you are building and what platform(s) you are targeting.  Write the code once and reuse it, rather than writing the code in multiple places and then realizing it can be isolated into one library.
  • 14.
  • 15.  Media – images, video  Design aspects  Models  View Models  Consumed APIs/RESTful services
  • 16.  Web & Windows Phone – Perhaps HTML5, Silverlight, or C#  Web,Windows Phone, and Windows Store – C#  Web & general mobile – consider HTML5
  • 17.
  • 18.  User Interface  Business Logic  Data Layer
  • 19.  Some code is shareable without the portable class library  Share the code that would be the same on each platform  Typically not the UI  Mostly as much business logic as possible  Perhaps data layer  Portable view models  Validation  Use design patterns that lend themselves to reusability  Model-View-ViewModel (MVVM)  Model-View-Controller (MVC)  Use third party tools that support cross-platform development
  • 20.  Appcelerator  PhoneGap  RhoMobile  WidgetPad  MoSync
  • 21.  Visual Studio for targeting Windows  MonoGame to help target many platforms:  iOS  Android  Mac OS X  Linux  Windows 8 Metro  Futures include:  Windows Phone 8  OUYA (Android-based gaming station)  PlayStation Mobile
  • 22. A look at Portable Class Libraries
  • 23.  Desktop  Web  Phone  Cloud  Xbox  Tablets
  • 24.  .NET 4 and Silverlight 4  Portable Library Tools for Visual Studio 2010  Built-in Portable Library support in Visual Studio 2012
  • 25.  .NET Framework 4, Update 4.0.3 for the .NET Framework 4, and .NET Framework 4.5  .NET for Windows store apps  Windows Phone 7 and higher (Windows Phone SDK 8.0 for Windows Phone 8 support)  Silverlight 4 and 5  Xbox 360
  • 26.
  • 27.  They must be shared across the target platforms you selected.  They must behave similarly across those platforms.  They must not be candidates for deprecation.  They must make sense in a portable environment, especially when supporting members are not portable.  Portable Class Library support appears under Version Information for a MSDN article
  • 28.  Include shared business logic and data layer logic in the portable class libraries  Use MVVM to write the apps  Models and View Models can be shared across platforms and included in portable libraries  Platform-specific views  Portable abstractions for non-portable functionality  Implement the abstractions for each platform  Use IoC or service locator to hook up implementations
  • 29. • How to display information • Written in XAML, HTML, some other markup language • Platform-specific View • What information to display • Flow of interaction • Can be shared in a portable class library View Model • Data objects • Business logic • Can be shared in a portable class library Model
  • 30. Portable Class Library (Models & View Models) Windows Store App (Views) Windows Phone App (Views) Silverlight (Views)
  • 31.
  • 32.  Calling Non-Portable Members from a Portable Class  Cannot call the non-portables directly  Need to create an abstract class in the Portable Class Library project and use that class from all portable code
  • 33.  HelpDesk Application  Metro Style App  Windows Phone 7 App  Download Source Code
  • 34.  Store common logic in the portable class library  Business logic, but not UI  Use abstract classes to work with non-portable code  For example, this may be applied to the data layer.  Use the MVVM pattern to help minimize code.
  • 35.  MVVM  MVVM Light Toolkit (portable fork)  MvvmCross  IoC  Autofac  PortableIoC  Ninject (portable fork)  Microsoft.Composition  Others  Json.NET  Metrolog  Zlib.Portable  Portable PRISM
  • 36.  Write Portable Code  Visual Studio Toolbox: Portable Class Libraries  Portable Class Libraries Contrib  Build 2012: Create Cross-platform Apps using Portable Class Libraries  .NET 4.5: David Kean and Mircea Trofin – Portable Libraries  Coding4Fun: Portable is as portable does… Maximizing code reuse via the magic of the Portable Class Library  Coding4Fun: Digging into your code with the free Microsoft Code Digger and the power of Pex  CodeProject: MonoGame Goes Portable  How to Make Portable Class Libraries Work forYou  Example: Disentanglement by Daniel Plaisted
  • 37.
  • 38.  Portable Class Libraries and other portable libraries make it easy to develop for multiple platforms.  Know the lay of the land.  Know your audience.  Know your goals for your app.  Keep your commonalities together.  Develop accordingly.