Como deixar de fazer "copy and paste" entre
Windows Store e Windows Phone Apps
Sara Silva
http://netponto.org35ª Reunião L...
Sara Silva
Windows 8 & Windows Phone Developer
Comunidades:
 MCPD: Windows Developer 3.5
 MCTS: WPF 3.5/4.0 e Windows Fo...
Agenda
• Introdução
• Partilha de ficheiros de código
• Portable Class Library
• Portable Class Library + MVVM
• Bibliotec...
Introdução
2 Plataformas
3 aplicações
6 projetos
Pílula WP Pílula Win8
Galinho WP Galinho Win8
24 WP 24 Win8
Nota: Conside...
Introdução
• Código repetido entre projetos => 2x a mesma tarefa.
• Bug em WP => bug em Win8 e vice versa => 2x a mesma co...
Partilha de ficheiros de código
• Usar “Add as Link” para partilhar ficheiro de código
dentro de vários projetos.
• Usar d...
Partilha de ficheiros de código
#if !NETFX_CORE
public object Convert(object value, Type targetType, object parameter, Cul...
Partilha de ficheiros de código
Classes e métodos parciais
• Funcionalidade partilhadas num ficheiro.
• Funcionalidades ad...
Partilha de ficheiros de código
Exemplo do toolkit MVVM Light:
“Add as Link”
Portable Class Library
Mais valia no desenvolvimento multi-plataforma de aplicações usando
.Net Framework, uma vez que per...
Portable Class Library
Funcionalidades suportadas nas várias plataformas*:
* .Net Framework superior ou igual a 4.0.3
Portable Class Library
A documentação no MSDN informa sobre suporte:
Portable Class Library
Criação do projeto
O Visual Studio 2010 (Extensão+SP1) e 2012 disponibilizam template para Portable...
Portable Class Library
O Visual Studio 2010 (Extensão+SP1) e 2012 disponibilizam template para Portable Class Library.
Res...
Portable Class Library Project
Portable Class Library
• Não contém tipos relacionados com a UI porque o comportamento difere
entre a UI das diferentes pl...
Portable Class Library + MVVM
Portable Class Library + MVVM
Classes disponíveis para implementar MVVM:
System.Collections.ObjectModel
• ObservableCollec...
Consumindo Serviços Odata
Arquitetura
*only external portable libraries
Bibliotecas
• Microsoft.Bcl.Async
Permite usar async/await sem .Net Framework 4.5
• Portable Toolkit for MVVM
Fork do tool...
Conclusão
• Separar a UI da lógica da aplicação aplicando o padrão MVVM.
• Partilhar “portable .Net code” através de Porta...
Questões?
Referências
• Cross-Platform Development with the .NET Framework
• Using Portable Class Library with Model-View-View Model...
Others Samples
• PortableNotepad - This sample shows how to access non-portable functionality from portable code by creati...
Patrocinador “GOLD”
Twitter: @PTMicrosoft http://www.microsoft.com/portugal
Patrocinadores “Silver”
Patrocinadores “Bronze”
Próximas reuniões presenciais
• 23/02/2013 – Fevereiro (Lisboa)
16/03/2013 – Março (Lisboa)
Reserva estes dias na agenda! ...
Obrigada!
Sara Silva
geral@saramgsilva.com
http://www.saramgsilva.com
http://twitter.com/saramgsilva
http://pt.linkedin.co...
Upcoming SlideShare
Loading in …5
×

Como deixar de fazer copy and paste entre windows store e windows phone apps

0 views
638 views

Published on

No desenvolvimento de aplicações para Windows Phone e Windows Store, usando Silverlight ou C#/XAML respetivamente, deparamo-nos com código semelhante, se não igual, e por vezes dá-mos nos conta que durante o desenvolvimento apenas fazemos “copy and paste” entre os projetos das várias plataformas. E que tal deixar de o fazer? Partilhar, reutilizar código, economizar tempo, diminuir o tempo de manutenção, seria interessante? Mas como?

Pois é, nesta apresentação a Sara vai falar de Portable Class Libraries e de como poderemos partilhar o código entre várias plataformas de forma a não ter que voltar a fazer “copy and paste” entre projectos!

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
0
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

  • [EN] Share Code Files

    Use Add as Link to include same files in multiple projects
    Change once, Change everywhere
    What to do where platforms don’t match?

  • Shared functionality in one code file eg: DataSource.cs
    Platform specific code in additional code file eg: DataSource.WP8.cs
    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

  • MVVM Light Source Code:

    Open Win8 and WP8 Solution ;

    Show Code
    How to do “Add as Link” – use the RelayCommand – file is inside the .Net3,5
    Show directives - RelayCommand
    Parcial class in diferent files. Show the WeakFunc.Win8


  • Quando combinamos com .Net 4.0 e WP7 vamos encontrar mais incompatibilidades.
  • Creating a empty PCL project
    Show the dialog for choose the targets
    Edit the targets
    Show the subset


  • Deploying with Silverlight
    When you deploy a Portable Class Library assembly with a Silverlight-based application, you must ensure that the minimum runtime version required for the application is set to version 4.0.60129.0 or later. You set the minRuntimeVersion parameter value by including <param name="minRuntimeVersion" value="4.0.60129.0" /> in the webpage that hosts the Silverlight-based application
  • What’s the MVVM

  • Be Pragmatic:
    Develop UX specific to the target platform
    Don’t attempt to share UX resources (styles, controls, pages etc)
    Reuse and share code between platforms

    [EN]
    Separate UI from app logic (Model-View-ViewModel)

    Share portable .NET code in Portable Class Library

    “Abstactraion patter is the key”

    Use common Windows Runtime API (Add as Link)

    Complete with platform-specific code as necessary
  • Como deixar de fazer copy and paste entre windows store e windows phone apps

    1. 1. Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps Sara Silva http://netponto.org35ª Reunião Lisboa - 26/01/2013
    2. 2. Sara Silva Windows 8 & Windows Phone Developer Comunidades:  MCPD: Windows Developer 3.5  MCTS: WPF 3.5/4.0 e Windows Forms 3.5  Lic. Matemática: Especialização em Computação - DMUC
    3. 3. Agenda • Introdução • Partilha de ficheiros de código • Portable Class Library • Portable Class Library + MVVM • Bibliotecas • Conclusão
    4. 4. Introdução 2 Plataformas 3 aplicações 6 projetos Pílula WP Pílula Win8 Galinho WP Galinho Win8 24 WP 24 Win8 Nota: Considerando a mesma versão para WP7.5 e WP8
    5. 5. Introdução • Código repetido entre projetos => 2x a mesma tarefa. • Bug em WP => bug em Win8 e vice versa => 2x a mesma correção. • Menos funcionalidades. • Menos tempo para outras tarefas. • Custos a dobrar: “Se o custo para a empresa for Y €/hora => 2*Y€/hora ” “Se o meu custo for horas de sono => Durmo menos horas” • Desmotivação para quem desenvolve.
    6. 6. Partilha de ficheiros de código • Usar “Add as Link” para partilhar ficheiro de código dentro de vários projetos. • Usar de diretivas para diferenciar aspetos incompatíveis. • Usar classes e métodos parciais. • Altera-se uma vez, altera-se em todos os projetos. “Reusing code by including code files in multiple projects.”
    7. 7. Partilha de ficheiros de código #if !NETFX_CORE public object Convert(object value, Type targetType, object parameter, CultureInfo culture) #else public object Convert(object value, Type targetType, object parameter, string culture) #endif Usando diretivas: • NETFX_CORE Windows 8 • WINDOWS_PHONE Windows Phone Pode gerar code ilegível
    8. 8. Partilha de ficheiros de código Classes e métodos parciais • Funcionalidade partilhadas num ficheiro. • Funcionalidades adicionais que são especificas da plataforma num ficheiro adicional. • Classes parciais que são marcadas como “parcial” são compiladas numa “single class”. • Separar funcionalidades especificas da plataforma • É possível utilizar métodos parciais como mecanismo para separar logica especifica da plataforma. DataSource.cs | DataSource.WP8.cs | DataSource.Win8.cs
    9. 9. Partilha de ficheiros de código Exemplo do toolkit MVVM Light:
    10. 10. “Add as Link”
    11. 11. Portable Class Library Mais valia no desenvolvimento multi-plataforma de aplicações usando .Net Framework, uma vez que permite criar “portable assemblies” que podem ser referenciadas em projectos de várias plataformas sem que sejam preciso efetuar alterações. Vai conter o mínimo denominador comum de tipos de: • .NET Framework • Silverlight • .NET for Windows Store apps, • Windows Phone • Xbox 360
    12. 12. Portable Class Library Funcionalidades suportadas nas várias plataformas*: * .Net Framework superior ou igual a 4.0.3
    13. 13. Portable Class Library A documentação no MSDN informa sobre suporte:
    14. 14. Portable Class Library Criação do projeto O Visual Studio 2010 (Extensão+SP1) e 2012 disponibilizam template para Portable Class Library. Definição de “targets”: Editar propriedades do projeto
    15. 15. Portable Class Library O Visual Studio 2010 (Extensão+SP1) e 2012 disponibilizam template para Portable Class Library. Resultado da criação: “ One Source One Project One Binary Multiple Platforms!”
    16. 16. Portable Class Library Project
    17. 17. Portable Class Library • Não contém tipos relacionados com a UI porque o comportamento difere entre a UI das diferentes plataformas; • Para criar Windows Store Apps é requisito ter Windows 8, para criar Portable Class libraries com suporte a Windows Store Apps não é necessário. • Em aplicações Silverlight é preciso definir “minimum runtime version required” <param name="minRuntimeVersion" value="4.0.60129.0" />
    18. 18. Portable Class Library + MVVM
    19. 19. Portable Class Library + MVVM Classes disponíveis para implementar MVVM: System.Collections.ObjectModel • ObservableCollection<T> class • ReadOnlyObservableCollection<T> class System.Collections.Specialized • INotifyCollectionChanged class • NotifyCollectionChangedAction class • NotifyCollectionChangedEventArgs class • NotifyCollectionChangedEventHandler class System.ComponentModel • DataErrorsChangedEventArgs class • INotifyDataErrorInfo class • INotifyPropertyChanged class • System.Windows.Input.ICommand class • All classes in the System.ComponentModel.DataAnnotations namespace
    20. 20. Consumindo Serviços Odata
    21. 21. Arquitetura *only external portable libraries
    22. 22. Bibliotecas • Microsoft.Bcl.Async Permite usar async/await sem .Net Framework 4.5 • Portable Toolkit for MVVM Fork do toolkit MVVM Light: Portable.MvvmLightLibs • MvvmCross Biblioteca para implementar MVVM em Windows Phone, Windows Store, iOS, and Android • Portable Class Libraries Contrib Portable adapters and APIs • Json.NET JSON framework
    23. 23. Conclusão • Separar a UI da lógica da aplicação aplicando o padrão MVVM. • Partilhar “portable .Net code” através de Portable Class Libraries. “Abstractration pattern is the key” • A injeção de dependência permite encapsular especificidades da plataforma. • Funcionalidade comuns da Windows Runtime API podem ser partilhas através da partilha de ficheiros de código (“Add as Link”). • Se necessário, estender classes partilhadas para adicionar funcionalidades especificas da plataforma. • Quando pretendemos partilhar código, o desenho da arquitetura deve ter isso em mente!
    24. 24. Questões?
    25. 25. Referências • Cross-Platform Development with the .NET Framework • Using Portable Class Library with Model-View-View Model • Create Cross-platform Apps using Portable Class Libraries • Building Apps for Windows Phone 8 Jump Start (MVA) • Visual Studio Toolbox:Portable Class Libraries • Create a Continuous Client Using Portable Class Libraries • How to Leverage your Code across WP8 and Windows 8 • Portable Library Articles series by Jeremy Likness • How to Make Portable Class Libraries Work for You • Portable Class Library Enlightenment / Adaptation • Portable Class Libraries – Net Framework 4.0 • Portable Class Libraries – Net Framework 4.5
    26. 26. Others Samples • PortableNotepad - This sample shows how to access non-portable functionality from portable code by creating a portable abstraction with platform-specific implementations. Goals: Abstraction for Load / Save data in files Projects: Windows Phone, Windows Store App, WPF App • ContosoHelpdesk – This demo show advanced concepts. Goals: Navigation, inversion of control, and synchronizing data across multiple clients with Windows Azure Service Bus. Projects: Windows Phone, Windows Store App Note: Use Autofac portable library (IoC Container) • TwitterSearch – This sample shows how to create a twitter search client. Goals: Twitter Search API, Azure Mobile Services, Projects: Windows Phone, Windows Store App, Console App Note: Use MVVMCross portable library • Disentanglement - This is a solver for Thinkfun's Gordian's Knot puzzle which runs on Windows and Windows Phone. It uses a Portable Class Library to share the solver code between the different platforms Goals: Share the solver code. Projects: Windows Phone App, Desktop App, Xbox App • PixPresenter - is a photo sharing app that enables you to connect to another device using Proximity (NFC) and a tap gesture, and then send pictures back and forth between the connected devices. It demonstrates code sharing techniques that you can use when developing an app for bot Goals: Windows Runtime API common code Projects: Windows Phone, Windows Store App (C# and C++)
    27. 27. Patrocinador “GOLD” Twitter: @PTMicrosoft http://www.microsoft.com/portugal
    28. 28. Patrocinadores “Silver”
    29. 29. Patrocinadores “Bronze”
    30. 30. Próximas reuniões presenciais • 23/02/2013 – Fevereiro (Lisboa) 16/03/2013 – Março (Lisboa) Reserva estes dias na agenda! :)
    31. 31. Obrigada! Sara Silva geral@saramgsilva.com http://www.saramgsilva.com http://twitter.com/saramgsilva http://pt.linkedin.com/in/saramgsilva http://www.facebook.com/saramgsilva

    ×