Archive

Author Archive

Arquitectura para pequenas/médias aplicações em Silverlight

18 18UTC September 18UTC 2009 Ricardo Schiller Leave a comment

Assume-se que o leitor está familiarizado com Silverlight, Custom Controls e C# .net.

O objectivo deste texto consiste em apresentar uma arquitectura para aplicações de pequena/média dimensão em Silverlight.

As características principais que esta arquitectura tenta cumprir são simplicidade, modularidade e facilidade de desenvolvimento. 

Uma aplicação típica é constituída por um conjunto de contextos, cada um populado por um conjunto de controlos, os quais, quando activados, desencadeiam um conjunto de acções que alteram o estado interno da aplicação e actualizam a interface.

Nestes termos, é possível atribuir procedimentos a controlos, sendo estes executados mediante o estado interno da aplicação, e respectivos estímulos efectuado sobre os mesmos (controlos). A maneira mais simples de fazer esta atribuição de procedimentos consiste em especificá-los directamente dentro do corpo (ou classe) do controlo. Infelizmente, esta metodologia dificulta a reutilização de código desenvolvido e promove a replicação de código semelhante, o que por sua vez tem impacto sobre a manutenção, extensão e compreensão da aplicação à medida que esta vai crescendo. Aplicações desenvolvidas em Silverlight não fogem a esta regra. Por esta razão, proponho aqui uma solução que tenta resolver alguns destes problemas. O objectivo desta solução consiste em facilitar uma metodologia de desenvolvimento que promove uma separação entre controlos, contextos e comportamentos.

Neste texto, para simplificar, vamos assumir que a aplicação que queremos desenvolver necessita apenas de botões como controlos e de menus como contextos. Os botões, por sua vez, podem fazer aparecer e desaparecer menus e activar e desactivar outros botões.

Uma vista inicial da aplicação que propomos segue a seguinte estrutura:

clip_image002

É constituída por uma solução Silverlight, um projecto adicional chamado ApplicationFramework e quatro directórios iniciais: Attributes, Behaviours, Controls e Themes.

Read more…