Arquitectura para pequenas/médias aplicações em Silverlight
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:
É constituída por uma solução Silverlight, um projecto adicional chamado ApplicationFramework e quatro directórios iniciais: Attributes, Behaviours, Controls e Themes.
