como deixar de fazer copy and paste entre windows store e windows phone apps
DESCRIPTION
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!TRANSCRIPT
![Page 1: Como deixar de fazer copy and paste entre windows store e windows phone apps](https://reader033.vdocuments.net/reader033/viewer/2022061218/54b7227b4a795916198b4599/html5/thumbnails/1.jpg)
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
![Page 2: Como deixar de fazer copy and paste entre windows store e windows phone apps](https://reader033.vdocuments.net/reader033/viewer/2022061218/54b7227b4a795916198b4599/html5/thumbnails/2.jpg)
Sara SilvaWindows 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
![Page 3: Como deixar de fazer copy and paste entre windows store e windows phone apps](https://reader033.vdocuments.net/reader033/viewer/2022061218/54b7227b4a795916198b4599/html5/thumbnails/3.jpg)
Agenda
• Introdução
• Partilha de ficheiros de código
• Portable Class Library
• Portable Class Library + MVVM
• Bibliotecas
• Conclusão
![Page 4: Como deixar de fazer copy and paste entre windows store e windows phone apps](https://reader033.vdocuments.net/reader033/viewer/2022061218/54b7227b4a795916198b4599/html5/thumbnails/4.jpg)
Introdução
2 Plataformas
3 aplicações
6 projetosPílula WP Pílula Win8Galinho WP Galinho Win824 WP 24 Win8
Nota: Considerando a mesma versão para WP7.5 e WP8
![Page 5: Como deixar de fazer copy and paste entre windows store e windows phone apps](https://reader033.vdocuments.net/reader033/viewer/2022061218/54b7227b4a795916198b4599/html5/thumbnails/5.jpg)
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.
![Page 6: Como deixar de fazer copy and paste entre windows store e windows phone apps](https://reader033.vdocuments.net/reader033/viewer/2022061218/54b7227b4a795916198b4599/html5/thumbnails/6.jpg)
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.”
![Page 7: Como deixar de fazer copy and paste entre windows store e windows phone apps](https://reader033.vdocuments.net/reader033/viewer/2022061218/54b7227b4a795916198b4599/html5/thumbnails/7.jpg)
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
![Page 8: Como deixar de fazer copy and paste entre windows store e windows phone apps](https://reader033.vdocuments.net/reader033/viewer/2022061218/54b7227b4a795916198b4599/html5/thumbnails/8.jpg)
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
![Page 10: Como deixar de fazer copy and paste entre windows store e windows phone apps](https://reader033.vdocuments.net/reader033/viewer/2022061218/54b7227b4a795916198b4599/html5/thumbnails/10.jpg)
“Add as Link”
demonstração
![Page 11: Como deixar de fazer copy and paste entre windows store e windows phone apps](https://reader033.vdocuments.net/reader033/viewer/2022061218/54b7227b4a795916198b4599/html5/thumbnails/11.jpg)
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
![Page 12: Como deixar de fazer copy and paste entre windows store e windows phone apps](https://reader033.vdocuments.net/reader033/viewer/2022061218/54b7227b4a795916198b4599/html5/thumbnails/12.jpg)
Portable Class LibraryFuncionalidades suportadas nas várias plataformas*:
* .Net Framework superior ou igual a 4.0.3
![Page 13: Como deixar de fazer copy and paste entre windows store e windows phone apps](https://reader033.vdocuments.net/reader033/viewer/2022061218/54b7227b4a795916198b4599/html5/thumbnails/13.jpg)
Portable Class LibraryA documentação no MSDN informa sobre suporte:
![Page 14: Como deixar de fazer copy and paste entre windows store e windows phone apps](https://reader033.vdocuments.net/reader033/viewer/2022061218/54b7227b4a795916198b4599/html5/thumbnails/14.jpg)
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
![Page 15: Como deixar de fazer copy and paste entre windows store e windows phone apps](https://reader033.vdocuments.net/reader033/viewer/2022061218/54b7227b4a795916198b4599/html5/thumbnails/15.jpg)
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!”
![Page 16: Como deixar de fazer copy and paste entre windows store e windows phone apps](https://reader033.vdocuments.net/reader033/viewer/2022061218/54b7227b4a795916198b4599/html5/thumbnails/16.jpg)
Portable Class Library Project
demonstração
![Page 17: Como deixar de fazer copy and paste entre windows store e windows phone apps](https://reader033.vdocuments.net/reader033/viewer/2022061218/54b7227b4a795916198b4599/html5/thumbnails/17.jpg)
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" />
![Page 18: Como deixar de fazer copy and paste entre windows store e windows phone apps](https://reader033.vdocuments.net/reader033/viewer/2022061218/54b7227b4a795916198b4599/html5/thumbnails/18.jpg)
Portable Class Library + MVVMViews (Platform-specific)
How to display informationWritten in XAML
View Models (Portable)What information to displayFlow of interaction
Models (Portable)Data objectsBusiness logicEtc.
![Page 19: Como deixar de fazer copy and paste entre windows store e windows phone apps](https://reader033.vdocuments.net/reader033/viewer/2022061218/54b7227b4a795916198b4599/html5/thumbnails/19.jpg)
Portable Class Library + MVVMClasses 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
![Page 20: Como deixar de fazer copy and paste entre windows store e windows phone apps](https://reader033.vdocuments.net/reader033/viewer/2022061218/54b7227b4a795916198b4599/html5/thumbnails/20.jpg)
Consumindo Serviços Odata
demonstração
![Page 21: Como deixar de fazer copy and paste entre windows store e windows phone apps](https://reader033.vdocuments.net/reader033/viewer/2022061218/54b7227b4a795916198b4599/html5/thumbnails/21.jpg)
Arquitetura
*only external portable libraries
![Page 22: Como deixar de fazer copy and paste entre windows store e windows phone apps](https://reader033.vdocuments.net/reader033/viewer/2022061218/54b7227b4a795916198b4599/html5/thumbnails/22.jpg)
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
![Page 23: Como deixar de fazer copy and paste entre windows store e windows phone apps](https://reader033.vdocuments.net/reader033/viewer/2022061218/54b7227b4a795916198b4599/html5/thumbnails/23.jpg)
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!
![Page 24: Como deixar de fazer copy and paste entre windows store e windows phone apps](https://reader033.vdocuments.net/reader033/viewer/2022061218/54b7227b4a795916198b4599/html5/thumbnails/24.jpg)
Questões?
![Page 25: Como deixar de fazer copy and paste entre windows store e windows phone apps](https://reader033.vdocuments.net/reader033/viewer/2022061218/54b7227b4a795916198b4599/html5/thumbnails/25.jpg)
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
![Page 26: Como deixar de fazer copy and paste entre windows store e windows phone apps](https://reader033.vdocuments.net/reader033/viewer/2022061218/54b7227b4a795916198b4599/html5/thumbnails/26.jpg)
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 filesProjects: 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 AppNote: 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 platformsGoals: 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 botGoals: Windows Runtime API common codeProjects: Windows Phone, Windows Store App (C# and C++)
![Page 27: Como deixar de fazer copy and paste entre windows store e windows phone apps](https://reader033.vdocuments.net/reader033/viewer/2022061218/54b7227b4a795916198b4599/html5/thumbnails/27.jpg)
Patrocinador “GOLD”
Twitter: @PTMicrosoft http://www.microsoft.com/portugal
![Page 29: Como deixar de fazer copy and paste entre windows store e windows phone apps](https://reader033.vdocuments.net/reader033/viewer/2022061218/54b7227b4a795916198b4599/html5/thumbnails/29.jpg)
Patrocinadores “Bronze”
![Page 30: Como deixar de fazer copy and paste entre windows store e windows phone apps](https://reader033.vdocuments.net/reader033/viewer/2022061218/54b7227b4a795916198b4599/html5/thumbnails/30.jpg)
Próximas reuniões presenciais
• 23/02/2013 – Fevereiro (Lisboa)16/03/2013 – Março (Lisboa)
Reserva estes dias na agenda! :)
![Page 31: Como deixar de fazer copy and paste entre windows store e windows phone apps](https://reader033.vdocuments.net/reader033/viewer/2022061218/54b7227b4a795916198b4599/html5/thumbnails/31.jpg)
Obrigada!
Sara [email protected]
http://www.saramgsilva.comhttp://twitter.com/saramgsilvahttp://pt.linkedin.com/in/saramgsilvahttp://www.facebook.com/saramgsilva