SlideShare uma empresa Scribd logo
1 de 34
Boas Práticas em Aplicações Silverlight 2.0 (baseado na sessão DevDays WUX301 por Pedro Fortes) 28MAI09 - ViaTecla Software Sérgio Agostinho (sagostinho@viatecla.com) Gustavo Arranhado (garranhado@viatecla.com) www.viatecla.com
Agenda Contexto/motivação Tópicos Experiência de Instalação Carregamento Carregamento assíncrono Search Engine Optimization Isolated Storage Design Time Experiences Parâmetros de Inicialização Conclusão Mais informações Brevemente Discussão Utilização de Media Animação do tamanho de caracteres Visibility vs Opacity XPerf Memória & Garbage Collector Localização Compressão XAP (extra)
CarregamentoAssíncrono (1) O XAP não deve conter ficheiros grandes Vídeos e imagens devem ser carregados assíncronamente. O site é aberto mais rapidamente. É possível tirar melhor partido da cache do browser.
CarregamentoAssíncrono (2) Versus
Search Engine Optimization (1) Como tornar uma RIA indexável? Começar com tudo o que se aplica a uma página “normal”!
Search Engine Optimization (2) Como tornar uma RIA indexável? Ter um conteúdo alternativo numa DIV escondida
Isolated Storage (1) O que é isto? “Super Cookies”  File system virtual dentro da sandbox do plug-in Silverlight Escopo por aplicação vs site Acesso via ficheiro (FileStream) vs via dicionário (objecto) Quota de 1 MiBpor omissão (pode crescer a pedido)
Isolated Storage (2) Acesso via ficheiro Semelhante ao System.IO.File do .NET + quotas
Isolated Storage (3) Acesso via dicionário Semelhante àConfigurationManager.AppSettings do .NET
Isolated Storage (4) Do lado do cliente Clique direito Silverlight Application Storage
Parâmetros de Inicialização (1) O controlo Silverlighttêm diversos parâmetros Sintaxe à láSilverlight 1.0
Parâmetros de Inicialização (2) O controlo Silverlighttêm diversos parâmetros Sintaxe à láSilverlight 2.0
Parâmetros de Inicialização (3) O InitParameters é um campo aberto Trata-se de uma lista de pares chave/valor separados por ‘;’ Como usar no código:
Memória & Garbage Collection (1) Como saber que memória é que o plug-in usa? O Chrome até diz, mas nem todos os browsers são assim…
Memória & Garbage Collection (2) Como saber que memória é que o plug-in usa? Perguntamos ao Almeida!
Memória & Garbage Collection (3) Por omissão não queremos ver esta informação Usamos a query string para entrar em modo debug
Memória & Garbage Collection (4) Resultado: maior controlo sobre a memória (Se ignorarmos o princípio da incerteza…)
Localização (1) Como fazer sites multicultura? Com controlos nativos isso é “dado”: Datas, separadores, moeda… Como fazer sites multilingue? Não é óbvio, mas é só seguir a “receita”
Localização (2) Criar resources com as strings Um por omissão e um para cada língua
Localização (3) Os resources têm de ser public É preciso mudar o Access Modifier, mas não chega… É preciso mudar o código fonte automaticamente gerado sempre que se modifica o resource
Localização (4) Fazer o binding no componente Pode ser feito em código XAML ou .NET
Localização (5) Definir as culturas suportadas no .csproj Este passo tem de ser feito num editor de XML externo:
Localização (6) Escolher a cultura Por omissão é usada a cultura do sistema operativo. Em ASP.NET pode-se usar a cultura do browser. Para uma página HTML fica hard-coded.
Localização (7)
Extra: Compressão do XAP Um ficheiro XAP é um ZIP Nada nos impede de alterar a compressão  Redução típica de ~25 % na VT
Experiência de Instalação Apresente Valor Crie expectativas, desvendando o que tem para oferecer Apresente uma UX consistente Reduza a resistência e o “medo” Aborde o processo de instalação numa linguagem acessível Torne o processo o mais transparente possível Simplicidade, atenção e interacção Remova distracções e ajude o utilizador a tomar a decisão certa Recompensa Entregue o que prometeu!
Carregamento Evite apresentar a animação de carregamento standard Crie uma animação de carregamento coerente com a estética da aplicação
Design Time Experiences Crie dados de teste em designer modepara que assim seja possível apresentar com maior fidelidade o que em runtime será visualizado
Utilização de Media Não apresente video numa resolução diferente da origem Não especifique Width e Height diferentes da source O resize “tem um preço” Se precisar de alterar a resolução de um elemento, opte por efectuar um re-encode para as dimensões desejadas (use por exemplo o Expression Encoder) Render O Silverlight tira partido de arquitecturas multi-core na renderização e apresentação de media, nestes sistemas o desempenho das suas aplicações será superior
Animação do tamanho de caracteres O Silverlight procura “suavizar” o rendering dos text glyphs o que pode levar à utilização extensiva de recursos e consequentemente reduzir o número dos FPS Se for imprescindível pode ser preferível a utilização de vector graphics
Visibility vs Opacity Se desejar colocar um objecto invisível modifique a propriedade Visibility para Collapsed em vez de colocar a Opacity a 0 Opacity tem “custos” mais elevados uma vez que o objecto ainda é hit tested e tecnicamente rendered Não esquecer os StoryBoards que fazem fade in/out animando a Opacity
Maisinformações DevDays 09 – Apresentação Original do Pedro Fortes http://www.devdays09.com/Pesquisa/wux301 Blog de Pedro Fortes http://blogs.msdn.com/deviations Comunidade XAML-PT http://xamlpt.com DevDays 09 – “Optimização de Performance de Web Sites” (Tiago Andrade e Silva) http://www.devdays09.com/Pesquisa/wux303 MSDN – SilverlightProperties http://msdn.microsoft.com/en-us/library/system.web.ui.silverlightcontrols.silverlight_properties(VS.95).aspx SearchEngineOptimization – Sessão Interna do Pedro Lameiras http://sharepoint.viatecla.pt/devvt/Lists/Sessoes/DispForm.aspx?ID=12
Brevemente num cinema perto de si Desenvolvimento Web com Silverlight e WCF Silverlight3.0 …
Obrigado pela vossa atenção!

Mais conteúdo relacionado

Semelhante a Boas Práticas em Aplicações Silverlight 2

Pangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformPangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformAndré Paulovich
 
5505 otimizando frontends
5505   otimizando frontends5505   otimizando frontends
5505 otimizando frontendsAndre Baltieri
 
[MTC 2021] As 8 melhores práticas e formas de simplificar e estruturar todos...
[MTC 2021] As 8 melhores práticas e formas de simplificar e estruturar todos...[MTC 2021] As 8 melhores práticas e formas de simplificar e estruturar todos...
[MTC 2021] As 8 melhores práticas e formas de simplificar e estruturar todos...minastestingconference
 
Big Data, Performance, Posix, RTB no mercado de publicidade online
Big Data, Performance, Posix, RTB no mercado de publicidade onlineBig Data, Performance, Posix, RTB no mercado de publicidade online
Big Data, Performance, Posix, RTB no mercado de publicidade onlineTiago Peczenyj
 
Apresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemApresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemRodrigo Valerio
 
Introdução à computação na nuvem e Windows Azure
Introdução à computação na nuvem e Windows AzureIntrodução à computação na nuvem e Windows Azure
Introdução à computação na nuvem e Windows AzureGiovanni Bassi
 
Surpreenda-se com o Silverlight 3
Surpreenda-se com o Silverlight 3Surpreenda-se com o Silverlight 3
Surpreenda-se com o Silverlight 3Rodrigo Kono
 
QCon 2011
QCon 2011QCon 2011
QCon 2011Ismael
 
AnaliseDeDados_SQLSat906
AnaliseDeDados_SQLSat906AnaliseDeDados_SQLSat906
AnaliseDeDados_SQLSat906Orlando Mariano
 
Html5 pt - Offline Apps
Html5 pt - Offline AppsHtml5 pt - Offline Apps
Html5 pt - Offline AppsByclosure
 
Trabalhando com ambientes complexos – SharePoint 2007 e SQL Server 2005
Trabalhando com ambientes complexos – SharePoint 2007 e SQL Server 2005Trabalhando com ambientes complexos – SharePoint 2007 e SQL Server 2005
Trabalhando com ambientes complexos – SharePoint 2007 e SQL Server 2005Comunidade CanalSharePoint
 
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
 
Conhecendo as opcoes de Storage na Nuvem da AWS
Conhecendo as opcoes de Storage na Nuvem da AWSConhecendo as opcoes de Storage na Nuvem da AWS
Conhecendo as opcoes de Storage na Nuvem da AWSAmazon Web Services LATAM
 
Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...
Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...
Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...Rio Info
 
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo CustoJava No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo CustoÉberli Cabistani Riella
 
ODI SERIES - Melhores Práticas
ODI SERIES - Melhores PráticasODI SERIES - Melhores Práticas
ODI SERIES - Melhores PráticasCaio Lima
 
Minicurso Ajax - 5. Semana de Informática PUC Minas São Gabriel
Minicurso Ajax - 5. Semana de Informática PUC Minas São GabrielMinicurso Ajax - 5. Semana de Informática PUC Minas São Gabriel
Minicurso Ajax - 5. Semana de Informática PUC Minas São GabrielMarcelo Linhares
 
Criando Aplicações .NET com o TheWebMind
Criando Aplicações .NET com o TheWebMindCriando Aplicações .NET com o TheWebMind
Criando Aplicações .NET com o TheWebMindJaydson Gomes
 

Semelhante a Boas Práticas em Aplicações Silverlight 2 (20)

Java no Google App Engine - TDC2011
Java no Google App Engine - TDC2011Java no Google App Engine - TDC2011
Java no Google App Engine - TDC2011
 
Pangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformPangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud Platform
 
5505 otimizando frontends
5505   otimizando frontends5505   otimizando frontends
5505 otimizando frontends
 
[MTC 2021] As 8 melhores práticas e formas de simplificar e estruturar todos...
[MTC 2021] As 8 melhores práticas e formas de simplificar e estruturar todos...[MTC 2021] As 8 melhores práticas e formas de simplificar e estruturar todos...
[MTC 2021] As 8 melhores práticas e formas de simplificar e estruturar todos...
 
Big Data, Performance, Posix, RTB no mercado de publicidade online
Big Data, Performance, Posix, RTB no mercado de publicidade onlineBig Data, Performance, Posix, RTB no mercado de publicidade online
Big Data, Performance, Posix, RTB no mercado de publicidade online
 
Apresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemApresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvem
 
Introdução à computação na nuvem e Windows Azure
Introdução à computação na nuvem e Windows AzureIntrodução à computação na nuvem e Windows Azure
Introdução à computação na nuvem e Windows Azure
 
Surpreenda-se com o Silverlight 3
Surpreenda-se com o Silverlight 3Surpreenda-se com o Silverlight 3
Surpreenda-se com o Silverlight 3
 
QCon 2011
QCon 2011QCon 2011
QCon 2011
 
AnaliseDeDados_SQLSat906
AnaliseDeDados_SQLSat906AnaliseDeDados_SQLSat906
AnaliseDeDados_SQLSat906
 
Html5 pt - Offline Apps
Html5 pt - Offline AppsHtml5 pt - Offline Apps
Html5 pt - Offline Apps
 
Trabalhando com ambientes complexos – SharePoint 2007 e SQL Server 2005
Trabalhando com ambientes complexos – SharePoint 2007 e SQL Server 2005Trabalhando com ambientes complexos – SharePoint 2007 e SQL Server 2005
Trabalhando com ambientes complexos – SharePoint 2007 e SQL Server 2005
 
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
 
Conhecendo as opcoes de Storage na Nuvem da AWS
Conhecendo as opcoes de Storage na Nuvem da AWSConhecendo as opcoes de Storage na Nuvem da AWS
Conhecendo as opcoes de Storage na Nuvem da AWS
 
Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...
Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...
Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...
 
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo CustoJava No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
 
ODI SERIES - Melhores Práticas
ODI SERIES - Melhores PráticasODI SERIES - Melhores Práticas
ODI SERIES - Melhores Práticas
 
HTML5
HTML5HTML5
HTML5
 
Minicurso Ajax - 5. Semana de Informática PUC Minas São Gabriel
Minicurso Ajax - 5. Semana de Informática PUC Minas São GabrielMinicurso Ajax - 5. Semana de Informática PUC Minas São Gabriel
Minicurso Ajax - 5. Semana de Informática PUC Minas São Gabriel
 
Criando Aplicações .NET com o TheWebMind
Criando Aplicações .NET com o TheWebMindCriando Aplicações .NET com o TheWebMind
Criando Aplicações .NET com o TheWebMind
 

Boas Práticas em Aplicações Silverlight 2

  • 1. Boas Práticas em Aplicações Silverlight 2.0 (baseado na sessão DevDays WUX301 por Pedro Fortes) 28MAI09 - ViaTecla Software Sérgio Agostinho (sagostinho@viatecla.com) Gustavo Arranhado (garranhado@viatecla.com) www.viatecla.com
  • 2. Agenda Contexto/motivação Tópicos Experiência de Instalação Carregamento Carregamento assíncrono Search Engine Optimization Isolated Storage Design Time Experiences Parâmetros de Inicialização Conclusão Mais informações Brevemente Discussão Utilização de Media Animação do tamanho de caracteres Visibility vs Opacity XPerf Memória & Garbage Collector Localização Compressão XAP (extra)
  • 3. CarregamentoAssíncrono (1) O XAP não deve conter ficheiros grandes Vídeos e imagens devem ser carregados assíncronamente. O site é aberto mais rapidamente. É possível tirar melhor partido da cache do browser.
  • 5. Search Engine Optimization (1) Como tornar uma RIA indexável? Começar com tudo o que se aplica a uma página “normal”!
  • 6. Search Engine Optimization (2) Como tornar uma RIA indexável? Ter um conteúdo alternativo numa DIV escondida
  • 7. Isolated Storage (1) O que é isto? “Super Cookies”  File system virtual dentro da sandbox do plug-in Silverlight Escopo por aplicação vs site Acesso via ficheiro (FileStream) vs via dicionário (objecto) Quota de 1 MiBpor omissão (pode crescer a pedido)
  • 8. Isolated Storage (2) Acesso via ficheiro Semelhante ao System.IO.File do .NET + quotas
  • 9. Isolated Storage (3) Acesso via dicionário Semelhante àConfigurationManager.AppSettings do .NET
  • 10. Isolated Storage (4) Do lado do cliente Clique direito Silverlight Application Storage
  • 11. Parâmetros de Inicialização (1) O controlo Silverlighttêm diversos parâmetros Sintaxe à láSilverlight 1.0
  • 12. Parâmetros de Inicialização (2) O controlo Silverlighttêm diversos parâmetros Sintaxe à láSilverlight 2.0
  • 13. Parâmetros de Inicialização (3) O InitParameters é um campo aberto Trata-se de uma lista de pares chave/valor separados por ‘;’ Como usar no código:
  • 14. Memória & Garbage Collection (1) Como saber que memória é que o plug-in usa? O Chrome até diz, mas nem todos os browsers são assim…
  • 15. Memória & Garbage Collection (2) Como saber que memória é que o plug-in usa? Perguntamos ao Almeida!
  • 16. Memória & Garbage Collection (3) Por omissão não queremos ver esta informação Usamos a query string para entrar em modo debug
  • 17. Memória & Garbage Collection (4) Resultado: maior controlo sobre a memória (Se ignorarmos o princípio da incerteza…)
  • 18. Localização (1) Como fazer sites multicultura? Com controlos nativos isso é “dado”: Datas, separadores, moeda… Como fazer sites multilingue? Não é óbvio, mas é só seguir a “receita”
  • 19. Localização (2) Criar resources com as strings Um por omissão e um para cada língua
  • 20. Localização (3) Os resources têm de ser public É preciso mudar o Access Modifier, mas não chega… É preciso mudar o código fonte automaticamente gerado sempre que se modifica o resource
  • 21. Localização (4) Fazer o binding no componente Pode ser feito em código XAML ou .NET
  • 22. Localização (5) Definir as culturas suportadas no .csproj Este passo tem de ser feito num editor de XML externo:
  • 23. Localização (6) Escolher a cultura Por omissão é usada a cultura do sistema operativo. Em ASP.NET pode-se usar a cultura do browser. Para uma página HTML fica hard-coded.
  • 25. Extra: Compressão do XAP Um ficheiro XAP é um ZIP Nada nos impede de alterar a compressão  Redução típica de ~25 % na VT
  • 26. Experiência de Instalação Apresente Valor Crie expectativas, desvendando o que tem para oferecer Apresente uma UX consistente Reduza a resistência e o “medo” Aborde o processo de instalação numa linguagem acessível Torne o processo o mais transparente possível Simplicidade, atenção e interacção Remova distracções e ajude o utilizador a tomar a decisão certa Recompensa Entregue o que prometeu!
  • 27. Carregamento Evite apresentar a animação de carregamento standard Crie uma animação de carregamento coerente com a estética da aplicação
  • 28. Design Time Experiences Crie dados de teste em designer modepara que assim seja possível apresentar com maior fidelidade o que em runtime será visualizado
  • 29. Utilização de Media Não apresente video numa resolução diferente da origem Não especifique Width e Height diferentes da source O resize “tem um preço” Se precisar de alterar a resolução de um elemento, opte por efectuar um re-encode para as dimensões desejadas (use por exemplo o Expression Encoder) Render O Silverlight tira partido de arquitecturas multi-core na renderização e apresentação de media, nestes sistemas o desempenho das suas aplicações será superior
  • 30. Animação do tamanho de caracteres O Silverlight procura “suavizar” o rendering dos text glyphs o que pode levar à utilização extensiva de recursos e consequentemente reduzir o número dos FPS Se for imprescindível pode ser preferível a utilização de vector graphics
  • 31. Visibility vs Opacity Se desejar colocar um objecto invisível modifique a propriedade Visibility para Collapsed em vez de colocar a Opacity a 0 Opacity tem “custos” mais elevados uma vez que o objecto ainda é hit tested e tecnicamente rendered Não esquecer os StoryBoards que fazem fade in/out animando a Opacity
  • 32. Maisinformações DevDays 09 – Apresentação Original do Pedro Fortes http://www.devdays09.com/Pesquisa/wux301 Blog de Pedro Fortes http://blogs.msdn.com/deviations Comunidade XAML-PT http://xamlpt.com DevDays 09 – “Optimização de Performance de Web Sites” (Tiago Andrade e Silva) http://www.devdays09.com/Pesquisa/wux303 MSDN – SilverlightProperties http://msdn.microsoft.com/en-us/library/system.web.ui.silverlightcontrols.silverlight_properties(VS.95).aspx SearchEngineOptimization – Sessão Interna do Pedro Lameiras http://sharepoint.viatecla.pt/devvt/Lists/Sessoes/DispForm.aspx?ID=12
  • 33. Brevemente num cinema perto de si Desenvolvimento Web com Silverlight e WCF Silverlight3.0 …
  • 34. Obrigado pela vossa atenção!