SlideShare a Scribd company logo
1 of 30
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
Sara Silva
Windows 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 - DMUC


Comunidades:
Agenda
• Introdução

• Partilha de ficheiros de código

• Portable Class Library

• Portable Class Library + MVVM

• Bibliotecas

• Conclusão
Introdução




       2 Plataformas
                                                     Pílula WP     Pílula Win8
                                    6 projetos       Galinho WP     Galinho Win8
       3 aplicações                                  24 WP     24 Win8


Nota: Considerando a mesma versão para WP7.5 e WP8
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.
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.”
Partilha de ficheiros de código
Usando 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
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
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 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
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
O 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
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!”
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 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" />
Portable Class Library + MVVM
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
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 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
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!
Questões?
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
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.com/in/saramgsilva
http://www.facebook.com/saramgsilva

More Related Content

What's hot

JVM’s Livres - Paloma Costa
JVM’s Livres - Paloma CostaJVM’s Livres - Paloma Costa
JVM’s Livres - Paloma CostaTchelinux
 
Apresentação da Spin no SIMPASE 2013
Apresentação da Spin no SIMPASE 2013Apresentação da Spin no SIMPASE 2013
Apresentação da Spin no SIMPASE 2013SpinEngenharia
 
Apresentação maven
Apresentação mavenApresentação maven
Apresentação mavenAndré Justi
 
Quasar Framework - Front end de alto desempenho
Quasar Framework - Front end de alto desempenhoQuasar Framework - Front end de alto desempenho
Quasar Framework - Front end de alto desempenhoPatrick Monteiro
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks phpIgor Moura
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...Renato Groff
 
Modularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse Virgo
Modularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse VirgoModularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse Virgo
Modularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse VirgoRegis Machado
 
Overview install jammer
Overview install jammerOverview install jammer
Overview install jammerOromar Dantas
 
Programação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e ConcorrênciaProgramação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e ConcorrênciaFabio Moura Pereira
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendThiago Sinésio
 

What's hot (14)

JVM’s Livres - Paloma Costa
JVM’s Livres - Paloma CostaJVM’s Livres - Paloma Costa
JVM’s Livres - Paloma Costa
 
Apresentação da Spin no SIMPASE 2013
Apresentação da Spin no SIMPASE 2013Apresentação da Spin no SIMPASE 2013
Apresentação da Spin no SIMPASE 2013
 
O projeto Mono
O projeto MonoO projeto Mono
O projeto Mono
 
Apresentação maven
Apresentação mavenApresentação maven
Apresentação maven
 
Quasar Framework - Front end de alto desempenho
Quasar Framework - Front end de alto desempenhoQuasar Framework - Front end de alto desempenho
Quasar Framework - Front end de alto desempenho
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks php
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
 
Apresentação docker
Apresentação dockerApresentação docker
Apresentação docker
 
O que é docker?
O que é docker?O que é docker?
O que é docker?
 
Pascal
PascalPascal
Pascal
 
Modularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse Virgo
Modularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse VirgoModularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse Virgo
Modularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse Virgo
 
Overview install jammer
Overview install jammerOverview install jammer
Overview install jammer
 
Programação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e ConcorrênciaProgramação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e Concorrência
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
 

Viewers also liked

Experiencia de uso como factor crítico de éxito de una aplicación
Experiencia de uso como factor crítico de éxito de una aplicación Experiencia de uso como factor crítico de éxito de una aplicación
Experiencia de uso como factor crítico de éxito de una aplicación Raona
 
כנס השנתי הראשון לרבנים - מרכז תורת המשפחה
 כנס השנתי הראשון לרבנים  - מרכז תורת המשפחה כנס השנתי הראשון לרבנים  - מרכז תורת המשפחה
כנס השנתי הראשון לרבנים - מרכז תורת המשפחהm0527279185
 
σχεδιο εργασιας ρατσισμος
σχεδιο εργασιας ρατσισμοςσχεδιο εργασιας ρατσισμος
σχεδιο εργασιας ρατσισμοςMaria Dacoronia
 
Entorno de la mercadotecnia2
Entorno de la mercadotecnia2  Entorno de la mercadotecnia2
Entorno de la mercadotecnia2 guillely
 
Технология переработки ПЭТ "Бутылка в бутылку"
Технология переработки ПЭТ "Бутылка в бутылку"Технология переработки ПЭТ "Бутылка в бутылку"
Технология переработки ПЭТ "Бутылка в бутылку"centrecon
 
Mundu Mira Kooperatiba Elkartea Urola Kostako Mankomunitatearekin elkarlanean
Mundu Mira Kooperatiba Elkartea Urola Kostako Mankomunitatearekin elkarlaneanMundu Mira Kooperatiba Elkartea Urola Kostako Mankomunitatearekin elkarlanean
Mundu Mira Kooperatiba Elkartea Urola Kostako Mankomunitatearekin elkarlaneanmundu-mira-kooperatiba
 
Certificado
CertificadoCertificado
CertificadoJNR
 
Historia de España 1931 a 2013
Historia de España 1931 a 2013Historia de España 1931 a 2013
Historia de España 1931 a 2013gsanfer
 
Análisis Participativo de Riesgos
Análisis Participativo de RiesgosAnálisis Participativo de Riesgos
Análisis Participativo de RiesgosCristian Miranda
 
2º encontro do profap 2012
2º encontro do profap 20122º encontro do profap 2012
2º encontro do profap 2012josivaldopassos
 
Bioquímica Porto 2012
Bioquímica Porto 2012Bioquímica Porto 2012
Bioquímica Porto 2012Paulo Filho
 
Desistir jamais! perseverar sempre!
Desistir jamais! perseverar sempre!Desistir jamais! perseverar sempre!
Desistir jamais! perseverar sempre!JNR
 
Manual Prático de Obrigações Acessórias junto ao Fisco Federal – 3ª Edição - ...
Manual Prático de Obrigações Acessórias junto ao Fisco Federal – 3ª Edição - ...Manual Prático de Obrigações Acessórias junto ao Fisco Federal – 3ª Edição - ...
Manual Prático de Obrigações Acessórias junto ao Fisco Federal – 3ª Edição - ...IOB News
 

Viewers also liked (20)

Experiencia de uso como factor crítico de éxito de una aplicación
Experiencia de uso como factor crítico de éxito de una aplicación Experiencia de uso como factor crítico de éxito de una aplicación
Experiencia de uso como factor crítico de éxito de una aplicación
 
כנס השנתי הראשון לרבנים - מרכז תורת המשפחה
 כנס השנתי הראשון לרבנים  - מרכז תורת המשפחה כנס השנתי הראשון לרבנים  - מרכז תורת המשפחה
כנס השנתי הראשון לרבנים - מרכז תורת המשפחה
 
Ath clima orga....
Ath clima orga....Ath clima orga....
Ath clima orga....
 
σχεδιο εργασιας ρατσισμος
σχεδιο εργασιας ρατσισμοςσχεδιο εργασιας ρατσισμος
σχεδιο εργασιας ρατσισμος
 
Entorno de la mercadotecnia2
Entorno de la mercadotecnia2  Entorno de la mercadotecnia2
Entorno de la mercadotecnia2
 
Технология переработки ПЭТ "Бутылка в бутылку"
Технология переработки ПЭТ "Бутылка в бутылку"Технология переработки ПЭТ "Бутылка в бутылку"
Технология переработки ПЭТ "Бутылка в бутылку"
 
Mundu Mira Kooperatiba Elkartea Urola Kostako Mankomunitatearekin elkarlanean
Mundu Mira Kooperatiba Elkartea Urola Kostako Mankomunitatearekin elkarlaneanMundu Mira Kooperatiba Elkartea Urola Kostako Mankomunitatearekin elkarlanean
Mundu Mira Kooperatiba Elkartea Urola Kostako Mankomunitatearekin elkarlanean
 
Certificado
CertificadoCertificado
Certificado
 
Email
EmailEmail
Email
 
Agama islam
Agama islamAgama islam
Agama islam
 
Historia de España 1931 a 2013
Historia de España 1931 a 2013Historia de España 1931 a 2013
Historia de España 1931 a 2013
 
Análisis Participativo de Riesgos
Análisis Participativo de RiesgosAnálisis Participativo de Riesgos
Análisis Participativo de Riesgos
 
2º encontro do profap 2012
2º encontro do profap 20122º encontro do profap 2012
2º encontro do profap 2012
 
Dentista
DentistaDentista
Dentista
 
Bioquímica Porto 2012
Bioquímica Porto 2012Bioquímica Porto 2012
Bioquímica Porto 2012
 
Atrium Residences & Lofts
Atrium Residences & LoftsAtrium Residences & Lofts
Atrium Residences & Lofts
 
Via Alto Mapendi
Via Alto MapendiVia Alto Mapendi
Via Alto Mapendi
 
Desistir jamais! perseverar sempre!
Desistir jamais! perseverar sempre!Desistir jamais! perseverar sempre!
Desistir jamais! perseverar sempre!
 
Religion mochica
Religion mochicaReligion mochica
Religion mochica
 
Manual Prático de Obrigações Acessórias junto ao Fisco Federal – 3ª Edição - ...
Manual Prático de Obrigações Acessórias junto ao Fisco Federal – 3ª Edição - ...Manual Prático de Obrigações Acessórias junto ao Fisco Federal – 3ª Edição - ...
Manual Prático de Obrigações Acessórias junto ao Fisco Federal – 3ª Edição - ...
 

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

Visual Studio Summit 2014 - Portable Class Library
Visual Studio Summit 2014 - Portable Class LibraryVisual Studio Summit 2014 - Portable Class Library
Visual Studio Summit 2014 - Portable Class LibraryThiago Lunardi
 
DotNet Framework e Orientação a Objetos 1 - Introdução
DotNet Framework e Orientação a Objetos 1 - IntroduçãoDotNet Framework e Orientação a Objetos 1 - Introdução
DotNet Framework e Orientação a Objetos 1 - IntroduçãoLorival Smolski Chapuis
 
Desenvolvimento de Aplicações com Visual Studio
Desenvolvimento de Aplicações com Visual StudioDesenvolvimento de Aplicações com Visual Studio
Desenvolvimento de Aplicações com Visual StudioGeovani Ferreira Gonçalves
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019Renato Groff
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020Renato Groff
 
2006 - Tipos de Projeto & IDE do Visual Studio.ppt
2006 - Tipos de Projeto & IDE do Visual Studio.ppt2006 - Tipos de Projeto & IDE do Visual Studio.ppt
2006 - Tipos de Projeto & IDE do Visual Studio.pptRicardo Guerra Freitas
 
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...Renato Groff
 
ASP.NET Core com Linux, Docker e Azure
ASP.NET Core com Linux, Docker e AzureASP.NET Core com Linux, Docker e Azure
ASP.NET Core com Linux, Docker e AzureGiovanni Bassi
 
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020Renato Groff
 
Introdução ao Java_14Agosto2012.pdf
Introdução ao Java_14Agosto2012.pdfIntrodução ao Java_14Agosto2012.pdf
Introdução ao Java_14Agosto2012.pdfRubenManhia
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Renato Groff
 
Simplificando a montagem de ambientes de Dev+Testes com Docker | DEVDAY 2020
Simplificando a montagem de ambientes de Dev+Testes com Docker | DEVDAY 2020Simplificando a montagem de ambientes de Dev+Testes com Docker | DEVDAY 2020
Simplificando a montagem de ambientes de Dev+Testes com Docker | DEVDAY 2020Renato Groff
 
Evolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicEvolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicRicardo Guerra Freitas
 
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019Renato Groff
 

Similar to Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps (20)

Visual Studio Summit 2014 - Portable Class Library
Visual Studio Summit 2014 - Portable Class LibraryVisual Studio Summit 2014 - Portable Class Library
Visual Studio Summit 2014 - Portable Class Library
 
DotNet Framework e Orientação a Objetos 1 - Introdução
DotNet Framework e Orientação a Objetos 1 - IntroduçãoDotNet Framework e Orientação a Objetos 1 - Introdução
DotNet Framework e Orientação a Objetos 1 - Introdução
 
Fundamentos Java - 01
Fundamentos Java - 01Fundamentos Java - 01
Fundamentos Java - 01
 
Aula 1a.ppt
Aula 1a.pptAula 1a.ppt
Aula 1a.ppt
 
Desenvolvimento de Aplicações com Visual Studio
Desenvolvimento de Aplicações com Visual StudioDesenvolvimento de Aplicações com Visual Studio
Desenvolvimento de Aplicações com Visual Studio
 
Web tools pt-br
Web tools pt-brWeb tools pt-br
Web tools pt-br
 
.NET Open Source
.NET Open Source.NET Open Source
.NET Open Source
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020
 
2006 - Tipos de Projeto & IDE do Visual Studio.ppt
2006 - Tipos de Projeto & IDE do Visual Studio.ppt2006 - Tipos de Projeto & IDE do Visual Studio.ppt
2006 - Tipos de Projeto & IDE do Visual Studio.ppt
 
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...
 
Csharp
CsharpCsharp
Csharp
 
ASP.NET Core com Linux, Docker e Azure
ASP.NET Core com Linux, Docker e AzureASP.NET Core com Linux, Docker e Azure
ASP.NET Core com Linux, Docker e Azure
 
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
 
Introdução ao Java_14Agosto2012.pdf
Introdução ao Java_14Agosto2012.pdfIntrodução ao Java_14Agosto2012.pdf
Introdução ao Java_14Agosto2012.pdf
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
 
Simplificando a montagem de ambientes de Dev+Testes com Docker | DEVDAY 2020
Simplificando a montagem de ambientes de Dev+Testes com Docker | DEVDAY 2020Simplificando a montagem de ambientes de Dev+Testes com Docker | DEVDAY 2020
Simplificando a montagem de ambientes de Dev+Testes com Docker | DEVDAY 2020
 
Docker.io:
Docker.io: Docker.io:
Docker.io:
 
Evolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicEvolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual Basic
 
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
 

More from Comunidade NetPonto

Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...
Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...
Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...Comunidade NetPonto
 
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...Comunidade NetPonto
 
MVVM Light e Cimbalino Toolkits - Sara Silva
MVVM Light e Cimbalino Toolkits - Sara SilvaMVVM Light e Cimbalino Toolkits - Sara Silva
MVVM Light e Cimbalino Toolkits - Sara SilvaComunidade NetPonto
 
Deep dive into Windows Azure Mobile Services - Ricardo Costa
Deep dive into Windows Azure Mobile Services - Ricardo CostaDeep dive into Windows Azure Mobile Services - Ricardo Costa
Deep dive into Windows Azure Mobile Services - Ricardo CostaComunidade NetPonto
 
The power of templating.... with NVelocity - Nuno Cancelo
The power of templating.... with NVelocity - Nuno CanceloThe power of templating.... with NVelocity - Nuno Cancelo
The power of templating.... with NVelocity - Nuno CanceloComunidade NetPonto
 
ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoComunidade NetPonto
 
NoSQL em Windows Azure Table Storage - Vitor Tomaz
NoSQL em Windows Azure Table Storage - Vitor TomazNoSQL em Windows Azure Table Storage - Vitor Tomaz
NoSQL em Windows Azure Table Storage - Vitor TomazComunidade NetPonto
 
De Zero a Produção - João Jesus
De Zero a Produção - João JesusDe Zero a Produção - João Jesus
De Zero a Produção - João JesusComunidade NetPonto
 
Case studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store AppsCase studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store AppsComunidade NetPonto
 
Aspect-oriented Programming (AOP) com PostSharp
Aspect-oriented Programming (AOP) com PostSharpAspect-oriented Programming (AOP) com PostSharp
Aspect-oriented Programming (AOP) com PostSharpComunidade NetPonto
 
Utilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes UnitáriosUtilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes UnitáriosComunidade NetPonto
 
Dinâmica e Motivacao de Equipas de Projecto
Dinâmica e Motivacao de Equipas de ProjectoDinâmica e Motivacao de Equipas de Projecto
Dinâmica e Motivacao de Equipas de ProjectoComunidade NetPonto
 
KnockoutJS com ASP.NET MVC3: Utilização na vida real
KnockoutJS com ASP.NET MVC3: Utilização na vida realKnockoutJS com ASP.NET MVC3: Utilização na vida real
KnockoutJS com ASP.NET MVC3: Utilização na vida realComunidade NetPonto
 
Como ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComo ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComunidade NetPonto
 
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto ProieteWindows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto ProieteComunidade NetPonto
 
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIUma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIComunidade NetPonto
 
Como não entalar os dedos nas janelas: Finger-based apps no Windows 8
Como não entalar os dedos nas janelas: Finger-based apps no Windows 8Como não entalar os dedos nas janelas: Finger-based apps no Windows 8
Como não entalar os dedos nas janelas: Finger-based apps no Windows 8Comunidade NetPonto
 

More from Comunidade NetPonto (20)

Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...
Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...
Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...
 
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
 
MVVM Light e Cimbalino Toolkits - Sara Silva
MVVM Light e Cimbalino Toolkits - Sara SilvaMVVM Light e Cimbalino Toolkits - Sara Silva
MVVM Light e Cimbalino Toolkits - Sara Silva
 
Deep dive into Windows Azure Mobile Services - Ricardo Costa
Deep dive into Windows Azure Mobile Services - Ricardo CostaDeep dive into Windows Azure Mobile Services - Ricardo Costa
Deep dive into Windows Azure Mobile Services - Ricardo Costa
 
The power of templating.... with NVelocity - Nuno Cancelo
The power of templating.... with NVelocity - Nuno CanceloThe power of templating.... with NVelocity - Nuno Cancelo
The power of templating.... with NVelocity - Nuno Cancelo
 
ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis Paulino
 
ASP.NET Signal R - Glauco Godoi
ASP.NET Signal R - Glauco GodoiASP.NET Signal R - Glauco Godoi
ASP.NET Signal R - Glauco Godoi
 
NoSQL em Windows Azure Table Storage - Vitor Tomaz
NoSQL em Windows Azure Table Storage - Vitor TomazNoSQL em Windows Azure Table Storage - Vitor Tomaz
NoSQL em Windows Azure Table Storage - Vitor Tomaz
 
HTML5 - Pedro Rosa
HTML5 - Pedro RosaHTML5 - Pedro Rosa
HTML5 - Pedro Rosa
 
De Zero a Produção - João Jesus
De Zero a Produção - João JesusDe Zero a Produção - João Jesus
De Zero a Produção - João Jesus
 
OData – Super Cola W3
OData – Super Cola W3OData – Super Cola W3
OData – Super Cola W3
 
Case studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store AppsCase studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store Apps
 
Aspect-oriented Programming (AOP) com PostSharp
Aspect-oriented Programming (AOP) com PostSharpAspect-oriented Programming (AOP) com PostSharp
Aspect-oriented Programming (AOP) com PostSharp
 
Utilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes UnitáriosUtilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes Unitários
 
Dinâmica e Motivacao de Equipas de Projecto
Dinâmica e Motivacao de Equipas de ProjectoDinâmica e Motivacao de Equipas de Projecto
Dinâmica e Motivacao de Equipas de Projecto
 
KnockoutJS com ASP.NET MVC3: Utilização na vida real
KnockoutJS com ASP.NET MVC3: Utilização na vida realKnockoutJS com ASP.NET MVC3: Utilização na vida real
KnockoutJS com ASP.NET MVC3: Utilização na vida real
 
Como ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComo ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noite
 
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto ProieteWindows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
 
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIUma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
 
Como não entalar os dedos nas janelas: Finger-based apps no Windows 8
Como não entalar os dedos nas janelas: Finger-based apps no Windows 8Como não entalar os dedos nas janelas: Finger-based apps no Windows 8
Como não entalar os dedos nas janelas: Finger-based apps no Windows 8
 

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

  • 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. Sara Silva Windows 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 - DMUC Comunidades:
  • 3. Agenda • Introdução • Partilha de ficheiros de código • Portable Class Library • Portable Class Library + MVVM • Bibliotecas • Conclusão
  • 4. Introdução 2 Plataformas Pílula WP Pílula Win8 6 projetos Galinho WP Galinho Win8 3 aplicações 24 WP 24 Win8 Nota: Considerando a mesma versão para WP7.5 e WP8
  • 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. 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. Partilha de ficheiros de código Usando 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. 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. Partilha de ficheiros de código Exemplo do toolkit MVVM Light:
  • 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. Portable Class Library Funcionalidades suportadas nas várias plataformas*: * .Net Framework superior ou igual a 4.0.3
  • 13. Portable Class Library A documentação no MSDN informa sobre suporte:
  • 14. Portable Class Library O 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. 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!”
  • 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" />
  • 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
  • 21. Arquitetura *only external portable libraries
  • 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. 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!
  • 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. Patrocinador “GOLD” Twitter: @PTMicrosoft http://www.microsoft.com/portugal
  • 29. Próximas reuniões presenciais • 23/02/2013 – Fevereiro (Lisboa) 16/03/2013 – Março (Lisboa) Reserva estes dias na agenda! :)

Editor's Notes

  1. MVVM Light Source Code:Open Win8 and WP8 Solution ;Show CodeHow to do “Add as Link” – use the RelayCommand – file is inside the .Net3,5Show directives - RelayCommandParcial class in diferent files. Show the WeakFunc.Win8
  2. Quandocombinamos com .Net 4.0 e WP7 vamosencontrarmaisincompatibilidades.
  3. Creating a empty PCL projectShow the dialog for choose the targetsEdit the targetsShow the subset
  4. Be Pragmatic: Develop UX specific to the target platformDon’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