Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps

2,500 views

Published on

  • Be the first to comment

  • Be the first to like this

Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps

  1. 1. 35ª Reunião Lisboa - 26/01/2013 http://netponto.org Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps Sara Silva
  2. 2. Sara SilvaWindows 8 & Windows Phone Developer  MCPD: Windows Developer 3.5  MCTS: WPF 3.5/4.0 e Windows Forms 3.5  Lic. Matemática: Especialização em Computação - DMUCComunidades:
  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 Pílula WP Pílula Win8 6 projetos Galinho WP Galinho Win8 3 aplicações 24 WP 24 Win8Nota: 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ódigoUsando diretivas: • NETFX_CORE Windows 8 Pode gerar code • WINDOWS_PHONE Windows Phone ilegível #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
  8. 8. Partilha de ficheiros de códigoClasses 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ódigoExemplo do toolkit MVVM Light:
  10. 10. “Add as Link”
  11. 11. Portable Class LibraryMais valia no desenvolvimento multi-plataforma de aplicações usando.Net Framework, uma vez que permite criar “portable assemblies” quepodem ser referenciadas em projectos de várias plataformas sem quesejam 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 LibraryFuncionalidades suportadas nas várias plataformas*: * .Net Framework superior ou igual a 4.0.3
  13. 13. Portable Class LibraryA documentação no MSDN informa sobre suporte:
  14. 14. Portable Class LibraryO Visual Studio 2010 (Extensão+SP1) e 2012 disponibilizam template para Portable Class Library.Definição de “targets”: Criação do projeto Editar propriedades do projeto
  15. 15. Portable Class LibraryO 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 + MVVMClasses disponíveis para implementar MVVM:System.Collections.ObjectModel• ObservableCollection<T> class• ReadOnlyObservableCollection<T> classSystem.Collections.Specialized• INotifyCollectionChanged class• NotifyCollectionChangedAction class• NotifyCollectionChangedEventArgs class• NotifyCollectionChangedEventHandler classSystem.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. Patrocinador “GOLD” Twitter: @PTMicrosoft http://www.microsoft.com/portugal
  27. 27. Patrocinadores “Silver”
  28. 28. Patrocinadores “Bronze”
  29. 29. Próximas reuniões presenciais• 23/02/2013 – Fevereiro (Lisboa) 16/03/2013 – Março (Lisboa) Reserva estes dias na agenda! :)
  30. 30. Obrigada!Sara Silvageral@saramgsilva.comhttp://www.saramgsilva.comhttp://twitter.com/saramgsilvahttp://pt.linkedin.com/in/saramgsilvahttp://www.facebook.com/saramgsilva

×