Your SlideShare is downloading. ×
0
Maximizing code reuse between
Windows Phone 8 and Windows 8
Ken Cenerelli
@KenCenerelli
kencenerelli.wordpress.com
Agenda
• Part 1: Hardware Overview
• PlatformAPIs
• SharedCore
• Part 2: DevelopmentTechniques
• MVVM Project Structure
• ...
Part 1: Hardware Overview
• We are on the path toWindows andWindows
Phone convergence
• Right nowWindows 8 andWindows Phon...
Some Key Differences
• It’s important to design for the platform
differences as well as similarities
Windows 8 Platform
Windows Phone 8 Platform
Shared APIs
What Shared Core Means
• OS components such as the kernel, networking,
graphics support, file system and multimedia are
th...
What Shared Core Doesn’t Mean
• Windows 8 andWindows Phone 8 developers work
to exactly the same APIs
• (though you will s...
Part 2: Development Techniques
• Four examples of how you can approach code
reuse:
• MVVM project structure
• PortableClas...
MVVM - Overview
• MVVM is an architectural pattern:
• Relies on features XAML/C# provide
Why use MVVM?
• Loose coupling between UI and code
• Enables reusability
• Separation between UX designer & developer
• In...
MVVM components
• Model
• Data or business logic
• Database,Web Services, File System, etc.
• View Model
• A specializatio...
MVVM for code reuse
• Create a separate UI for each platform to take
advantage of the different screen sizes
• MVVM by its...
Demo 1:
MVVM Project Setup
Portable Class Libraries -
Overview
• Portable Class Libraries have been available since
.NET Framework 4
• Portable assem...
Portable Class Libraries – What
To Share
• Any managed code you write, particularly app logic
• Do not share conditional c...
Portable Class Libraries & MVVM
Demo 2:
Portable Class Library
Shared XAML UI - Overview
• Isolate parts of your UI into user controls and
attempt to share those. Windows Phone 8 and
Wi...
Shared XAML UI – What To
Share?
Demo 3:
Shared XAML UI
Sharing Code - Overview
• Change once, Change everywhere
• Approaches:
• Add as Link
• #if conditional blocks
• PartialCla...
Add As Link - Overview
• Use this technique for any code you’re able to
isolate that’s platform-independent and used in
bo...
#if Conditional Blocks - Overview
• Pros:
• Enable/Disable lines or chunks of code based on
compilation platform
• Existin...
Partial Classes - Overview
• Can put shared functionality in one code file and
platform specific code in additional code f...
Demo 4:
Creating a Partial Class
Actions to continue your learning
• Build a project in bothWindows 8 and
Windows Phone 8
• Create a Portable Class Library...
Resources for Attendees
• Channel 9: Building Apps for BothWindows 8
andWindows Phone 8 Jump Start
http://bit.ly/18dELOu
•...
Questions?
• Ken_Cenerelli@Outlook.com
• @KenCenerelli
• kencenerelli.wordpress.com
Upcoming SlideShare
Loading in...5
×

Maximizing code reuse between Windows Phone 8 and Windows 8 (That Conference 2013)

1,006

Published on

Examine how to better leverage the various technologies available to the developer to enable code reuse between Windows Phone 8 and Windows 8 Store apps.

The slides will be broken into two parts with the first looking at what the two platforms share in terms of hardware and their ""shared core"". After this it will dig into some code to demonstrate how portable class libraries, shared XAML UI and the MVVM project structure can make a developer's life so much easier.

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,006
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
44
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • The only true reuse scenario that is currently supported is via a Portable Class Library
  • - Windows 8 and Windows Phone 8 Share Many Components At The Operating System Level
  • Created by John GossmanDerived from MVCRequired XAML Data Binding
  • ViewModel:-The glue that ties the View to the model – the UI to the data- Exposes data from the model that the view can bind toView: Each page shown to a user is a ViewData from model is displayed to userUsing binding
  • The only true reuse scenario that is currently supported is via a Portable Class Library
  • Assemblies that target multiple platformsSupport subset of .NET assemblies that target the platforms you choosePCL doesn’t allow any WinRT/WinPRT APIs – only .NET (to get WinRT APIs, you need to link)Pros: Written in managed code, complete reuse with the ability to simply “Add Reference” to the built assembly.Cons: Severe limitations imposed by the need to work across different platforms without targeting. Important features such as INotifyPropertyChanged and Task are missing making it difficult to use in practice.
  • Show how to reference a PCLThe most common recommendation is to put your models and business logic in a reusable PCL and put your platform-specific view models in the respective User Interface tiers
  • - Microsoft insists that sharing XAML is not where you should invest time- Instead, you’ll have much more success structuring your app logic to make it reusable
  • Majority of UI will be platform specificPortable code can be compiled once and run on WP8 or W8 – anything in PCLCommon code is code that use APIs available to both platforms but not portable (WinRT APIs)B/C code must be compiled for each platform
  • This strategy is useful for where there are subtle differences (for example a different namespace or slightly different parameters to a method)The biggest issue with this strategy is that it can quite easily make code unreadable and hard to maintain.
  • This strategy is useful for where there are subtle differences (for example a different namespace or slightly different parameters to a method)The biggest issue with this strategy is that it can quite easily make code unreadable and hard to maintain.
  • Transcript of "Maximizing code reuse between Windows Phone 8 and Windows 8 (That Conference 2013)"

    1. 1. Maximizing code reuse between Windows Phone 8 and Windows 8 Ken Cenerelli @KenCenerelli kencenerelli.wordpress.com
    2. 2. Agenda • Part 1: Hardware Overview • PlatformAPIs • SharedCore • Part 2: DevelopmentTechniques • MVVM Project Structure • PortableClass Libraries • Shared XAML UI • SharingCode with Partial Classes • Wrap-up • Next Steps, Resources & Q & A
    3. 3. Part 1: Hardware Overview • We are on the path toWindows andWindows Phone convergence • Right nowWindows 8 andWindows Phone 8 have a shared core but you cannot write once and run everywhere (unlike iOS or Android) • We can however leverage some existing architecture similarities between the two
    4. 4. Some Key Differences • It’s important to design for the platform differences as well as similarities
    5. 5. Windows 8 Platform
    6. 6. Windows Phone 8 Platform
    7. 7. Shared APIs
    8. 8. What Shared Core Means • OS components such as the kernel, networking, graphics support, file system and multimedia are the same on bothWindows 8 andWindows Phone 8 • Hardware manufacturers work with the same driver model on both platforms • Windows Phone gets the support for multi-core and other hardware features that Windows has had for years • These solid, common foundations makes it easier to extend the Windows platform into the future
    9. 9. What Shared Core Doesn’t Mean • Windows 8 andWindows Phone 8 developers work to exactly the same APIs • (though you will see more commonality as new features are introduced to both platforms in the future)
    10. 10. Part 2: Development Techniques • Four examples of how you can approach code reuse: • MVVM project structure • PortableClass Libraries • Shared XAML UI • Add As Link (Partial Classes) • Accelerate your app development with these methods • Not all will work in every situation
    11. 11. MVVM - Overview • MVVM is an architectural pattern: • Relies on features XAML/C# provide
    12. 12. Why use MVVM? • Loose coupling between UI and code • Enables reusability • Separation between UX designer & developer • Increased testability
    13. 13. MVVM components • Model • Data or business logic • Database,Web Services, File System, etc. • View Model • A specialization of the Model that theView uses • Informs the view to update • No UI code • View • Represents the user interface the user sees • Should contain a minimal amount of code
    14. 14. MVVM for code reuse • Create a separate UI for each platform to take advantage of the different screen sizes • MVVM by itself doesn’t help us for sharing code across platforms – only on the same platform • Use Portable Class Libraries to share models and view models across platforms
    15. 15. Demo 1: MVVM Project Setup
    16. 16. Portable Class Libraries - Overview • Portable Class Libraries have been available since .NET Framework 4 • Portable assemblies can target multiple platforms, includingWindows 7,Windows 8,Windows Phone, Silverlight, and Xbox 360 • Only allowed to call APIs available across multiple platforms • Note: the Express versions ofVisual Studio 2012 don’t include a Portable Class Library project template. It is available only inVisual Studio 2012 Pro or greater
    17. 17. Portable Class Libraries – What To Share • Any managed code you write, particularly app logic • Do not share conditional compilation code (code forWP8 that you want to implement differently forWindows 8) • Instead, abstract away the platform-dependent code and share only the portable, platform-independent code • Windows Runtime APIs aren’t portable and can’t be used in a PortableClass Library • There is overlap in theWindows RuntimeAPIs that are supported on WP8 andWindows 8. However, binary compatibility is not supported. Your code has to be compiled for each platform • Doesn’t use UI constructs • AlthoughXAML forWP8 andWindows looks similar this code isn’t portable
    18. 18. Portable Class Libraries & MVVM
    19. 19. Demo 2: Portable Class Library
    20. 20. Shared XAML UI - Overview • Isolate parts of your UI into user controls and attempt to share those. Windows Phone 8 and Windows 8 both support XAML user controls • New controls take advantage of form factors • Consider the Windows Phone when designing the Windows 8 SnapView • Limitations • XAML onWindows Phone 8 and XAML onWindows 8 is not binary compatible • Namespace prefixes are different in XAML forWindows Phone 8 and XAML forWindows 8
    21. 21. Shared XAML UI – What To Share?
    22. 22. Demo 3: Shared XAML UI
    23. 23. Sharing Code - Overview • Change once, Change everywhere • Approaches: • Add as Link • #if conditional blocks • PartialClasses and Methods
    24. 24. Add As Link - Overview • Use this technique for any code you’re able to isolate that’s platform-independent and used in both apps • eg. User controls with no platform dependencies. • This is particularly useful when you’re trying to share code that uses aWindows Runtime API that can’t be shared inside a Portable Class Library
    25. 25. #if Conditional Blocks - Overview • Pros: • Enable/Disable lines or chunks of code based on compilation platform • Existing compilation constants • NETFX_CORE Windows 8 • WINDOWS_PHONE Windows Phone 8 • Useful for when there are subtle differences in syntax or methods • Cons: • A downside is it can make code unreadable
    26. 26. Partial Classes - Overview • Can put shared functionality in one code file and platform specific code in additional code file • Classes are marked as partial and compiled into a single class • Separates platform specific features • Can use partial methods as a mechanism to separate out platform specific logic
    27. 27. Demo 4: Creating a Partial Class
    28. 28. Actions to continue your learning • Build a project in bothWindows 8 and Windows Phone 8 • Create a Portable Class Library to link the two projects • Choose one other development technique to extend your code between both projects
    29. 29. Resources for Attendees • Channel 9: Building Apps for BothWindows 8 andWindows Phone 8 Jump Start http://bit.ly/18dELOu • Maximize code reuse betweenWindows Phone 8 and Windows 8 http://bit.ly/11TfzOl • How to Make Portable Class LibrariesWork for You http://bit.ly/116yIL4 • Channel 9: Create Cross-platformApps using PortableClass Libraries http://bit.ly/1906wv8
    30. 30. Questions? • Ken_Cenerelli@Outlook.com • @KenCenerelli • kencenerelli.wordpress.com
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×