30
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps Sara Silva http://netpont o.org 35ª Reunião Lisboa - 26/01/2013

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

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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 9: Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps

Partilha de ficheiros de códigoExemplo do toolkit MVVM Light:

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

“Add as Link”

demonstração

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

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

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

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

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

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

Portable Class Library Project

demonstração

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

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

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

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

Consumindo Serviços Odata

demonstração

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

Arquitetura

*only external portable libraries

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

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

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

Questões?

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

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

Patrocinador “GOLD”

Twitter: @PTMicrosoft http://www.microsoft.com/portugal

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

Patrocinadores “Bronze”

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

Próximas reuniões presenciais

• 23/02/2013 – Fevereiro (Lisboa)16/03/2013 – Março (Lisboa)

Reserva estes dias na agenda! :)

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

Obrigada!

Sara [email protected]

http://www.saramgsilva.comhttp://twitter.com/saramgsilvahttp://pt.linkedin.com/in/saramgsilvahttp://www.facebook.com/saramgsilva