Implementação utilizando Microsoft Silverlight

No documento Aplicações ricas na web (páginas 86-89)

6.2 Implementações da aplicação de referência

6.2.2 Implementação utilizando Microsoft Silverlight

A versão da aplicação de referência desenvolvida em Silverlight utilizou-se do Visual

Studio 2010 como IDE de desenvolvimento. Esta é ferramenta proprietária da Microsoft e que

possui recursos avançados de implementação e depuração. Assim como no Flash Builder, o

Visual Studio também possui uma interface gráfica facilitando a elaboração do layout da

aplicação. Para a implementação foram utilizadas a IDE na versão 10.0.4 com Service Pack 1, e o Silverlight 5.

Por utilizar como base a linguagem C# não foram encontradas dificuldades em relação a aprendizagem. Considera-se também que o autor possuía conhecimentos básicos em relação ao Silverlight e avançados em relação ao C#. Isto facilitou a implementação das características propostas. Foram utilizados diversos sites, próprios da Microsoft48 e diversos

blog pessoais com exemplos de implementações.

O Silverlight nativo não possui um grande número de controles de interface disponíveis. A Microsoft mantém em paralelo um projeto de código aberto chamado

Silverlight Toolkit. Este disponibiliza diversos componentes que facilitam o desenvolvimento

de aplicações em Silverlight. No site49 deste projeto também é possível encontrar uma aplicação exemplificando a utilização de cada componente.

48http://www.microsoft.com/silverlight/ Disponível em 05/06/2012. 49http://silverlight.codeplex.com/ Disponível em 05/06/2012.

O Silverlight Toolkit foi utilizado em praticamente toda implementação da aplicação proposta. Isto se deu pela impossibilidade de implementar a maioria das características sem sua utilização. Com isso, as especificações das informações gerais do pedido (C1) foram implementadas sem nenhuma dificuldade. Nela foram utilizados controles como Label,

ComboBox, TextBox e DatePicker. Para a disposição dos controles, ao invés de definir as

posições X e Y definiu-se as margens de cada um em relação ao controle externo. A princípio este conceito não é muito trivial, porém com a prática torna-se fácil sua utilização.

Na tela de itens do pedido, para a disposição dos produtos disponíveis, foi utilizado um controle do tipo ListBox aplicado um template de um controle do tipo WrapPanel. Este

template é utilizado para que os itens sejam dispostos conforme o especificado na aplicação

de referência. Esta utilização não é algo normal de ser implementado em qualquer tecnologia o que deixa a utilização desta listagem de certa forma confusa. Para a representação dos itens adicionados no pedido utilizou-se um controle DataGrid. Neste, as linhas foram representadas através de templates para a exibição dos dados estruturados conforme a representação da característica proposta.

Figura 35 - Implementação dos itens do pedido - C2 em Silverlight

A Figura 35 exibe a implementação da característica C2 descrita. Nela observa-se a que o layout proposto foi elaborado com sucesso. Além disso, está demonstrada a implementação da navegação entre as telas. Esta foi desenvolvida utilizando o evento de clique do cursor para realizar as transições propostas na característica C3 (navegação do

pedido).

O desenvolvimento da busca de itens (C4) foi desenvolvida de forma semelhante ao Flex. Baseou-se filtrando a lista de produtos a partir do evento TextChanged de um controle do tipo TextBox. A funcionalidade de drag-and-drop definida na característica C5 (adição de itens no pedido) não possuiu o comportamento esperado.

Para arrastar e soltar um elemento foi necessária a utilização de outros controles. Estes emvolvem o controle onde há elementos que possam ser arrastados ou o local onde se deseja soltar um elemento. Esta solução está presente através do Silverlight Toolkit. Há outra forma de implementar que consiste em controlar o clique e a posição do cursor, porém esta se torna muito trabalhosa. Mesmo usufruindo dos controles do Toolkit sua utilização não está estável na versão do Silverlight utilizada.

A implementação da quantidade solicitada (C6) utilizou do controle

NumericUpDown. Com ele foi possível gerenciar a quantidade máxima disponível do item

conforme especificação. Para a validação das informações gerais (C7) foi utilizado um padrão de exibição de aviso conforme exceção disparada da propriedade vinculada ao controle visual. Esta funcionalidade não é algo comum, porém pode ser muito útil para validações dinâmicas.

Para logística na emissão do pedido (C8) não foi possível utilizar a API da Google. Não há nenhuma API do Google Maps desenvolvida para o Silverlight. Além disso, segundo seus termos de serviço50 não é possível o acesso dos serviços de mapa através de tecnologias não autorizadas pela Google (Seção 10.1.1 do termo). Em contra partida, a Microsoft disponibiliza um serviço de mapas através do Bing Maps51. Este foi utilizado para implementação desta característica a qual atendeu com sucesso as especificações propostas apesar de ser relativamente mais complexa que a API disponibilizada pelo Google.

Os gráficos estatísticos (C9) especificados na aplicação de referência foram implementados utilizando os controles PieSeries e ColumnSeries. O desenvolvimento destes foi extremamente simples não necessitando mais de duas linhas de código para cada um. A única característica não implementada foi o destaque da fatia selecionada no gráfico de pizza. O motivo disso foi por não haver nenhuma funcionalidade pronta como ocorreu no Flex e não foi encontrado nenhum exemplo representando isto.

A transição entre as telas do pedido (10) foi implementada de forma semelhante a do

Flex. Neste caso utilizou-se o controle TabControl que não dispõe as telas de forma

50https://developers.google.com/maps/terms?hl=pt-BR Disponível em 06/06/2012. 51http://www.microsoft.com/maps/ Disponível em 06/06/2012.

horizontal. De qualquer forma a implementação provou a possibilidade de uso de transições entre as telas possibilitando as medições propostas no método de comparação.

Por fim, a implementação da característica de uso da webcam (C12) foi implementada com sucesso. Esta utilizou os controles nativos CaptureSource e VideoBrush. Da mesma forma que o Flex, o Silverlight requer a autorização do usuário para acesso aos recursos locais.

A utilização da tecnologia Silverlight não demonstrou falta de funcionalidades. Porém, algumas não foram completamente eficientes. Em determinadas implementações as soluções encontradas não foram as mais triviais. De qualquer forma há diversos exemplos e não faltou documentação para apoiar o desenvolvimento da aplicação de referência.

No documento Aplicações ricas na web (páginas 86-89)