Quando uma nova tecnologia é apresentada, surgem dúvidas sobre sua utilização, seus limites, sua aplicação. Para responder essas questões existem vários livros técnicos, material até mesmo originado pela empresa que lançou a tecnologia. Contudo existem alguns assuntos que nem sempre são tratados. Por exemplo, as boas práticas que envolvem a tecnologia. Existe uma boa prática que é comum a grande maioria de tipo de software: separar a interface de usuário da lógica de negócio. Os usuários de um sistema interagem com o mesmo pela camada de apresentação (Presentation Layer, UI), nela estão os controles e componentes visuais necessários para apresentação das informações e solicitação de informações. Essa camada por sua vez se comunica com uma camada de serviço, que simplifica para a UI as rotinas através da criação de um API que abstraia um processo maior que envolva outras ações. Assim, a interface acessando apenas os serviços, a implementação desses serviços pode mudar sem necessariamente exigir mudança na UI. É muito importante que o código dessas camadas não se misture. Como a lógica da interface não está codificada e amarrada nos controles visuais utilizados, pode-se facilmente trocar esses controles sem influenciar o funcionamento de uma tela ou página por exemplo. Outro ponto favorável é a possibilidade de se testar a aplicação de forma automatizada. Ao fazer a separação é possível testar o comportamento da UI sem ter a necessidade de executar o software propriamente dito. Mas, existe um porém. Ao separar de forma correta não só a camada de interface, mas todas as camadas lógicas necessárias, há um aumento na complexidade do código, o que pode ser um problema para o entendimento do todo por parte de desenvolvedores menos experientes. Para alcançar essa separação vários estudos ao longo dos anos foram feitos. Esses estudos e implementações levaram à criação dos chamados Padrões de Projeto. Um padrão de projeto é uma solução para um problema recorrente. A separação da camada de interface é um problema recorrente em todo software. Assim, foram desenvolvidos alguns padrões que cuidam disso, os mais conhecidos são: Model-View-Controller (MVC) e Model-View-Presenter (MVP). Esses são padrões bem genéricos, que podem ser implementados em qualquer tecnologia, já que um padrão não define código e sim, a forma como solucionar o problema. O WPF surgiu como base para desenvolvimento de aplicativos Windows e que gradativamente vem substituindo a plataforma anterior, o Windows Forms. Com o WPF novos recursos foram criados, de tal forma que eles poderiam ser utilizados para facilitar a separação de código. Assim surgiu o padrão Model-View-ViewModel ou simplesmente MVVM, que nada mais é do que um padrão de separação de interface que faz uso dos recursos do WPF e mais recentemente do Silverlight. Ele foi desenvolvido por John Gossman, que em 2005 era o arquiteto do WPF na Microsoft. O padrão define três partes bem distintas, que compõem o seu próprio nome. A View representa a janela onde será exibida informação. Mas não apenas uma janela, o conceito aqui é mais abrangente. Uma view pode ser constituída de um conjunto de controles visuais ou, ser apenas um controle. O ViewModel nada mais é que uma classe que contém as ações e dados que uma View pode tomar e exibir, encapsulando sua lógica. Ele é responsável em preparar o Model para ser exibido pela View. Model por sua vez são as classes de negócio envolvidas mais o que for necessário para a lógica do negócio. O MVVM tem conquistado muita popularidade, principalmente pela grande aceitação dos desenvolvedores WPF e Silverlight. Essa popularidade é tanta que o padrão está começando a ganhar adaptações para o próprio ASP.NET, onde já existem algumas iniciativas de implementação do padrão MVVM. Nesse contexto, destacamos nessa edição o Caliburn.Micro, um framework de MVVM, Open Source, leve e compacto que pode ser utilizado para a construção de aplicações WPF, Silverlight ou Windows Phone 7.
Lista completa de artigos da edição:
WPF
Validação de dados com Validation Block
Luiz Gonzaga Mendonça
Desenvolvimento com Azure Storage Emulator
Visão de um desenvolvedor
Max Mosimann Netto
Serviços Windows
Desvendando sua arquitetura e estrutura interna
Anderson Santos Gusmão
XML
Personalizando a criação de arquivos XML com C#
Vladimir Rech
VÍDEO
Veja nesta vídeo aula como o SQL Server oferece suporte a XML diretamente no servidor de banco de dados
Guinther Pauli
VÍDEO
Veja nesta vídeo aula como gerar documentos XML em um WebService, usando XmlDocument, serializar o documento e consumir o mesmo a partir de outras plataformas, como Win32
Guinther Pauli
MVVM
Conheça o framework Caliburn.Micro
Rodrigo Sendin
NInject
Injeção de Dependência
Renato José Groffe
VÍDEO
Veja nesta vídeo aula como usar os framework Unit para Injeção de Dependência
Guinther Pauli
Microsoft Moles
Conhecendo e utilizando este framework de testes
Fabio Gouw
Reflection
Consultando informações sobre tipos de dados e objetos dinamicamente
Anderson Santos Gusmão
VÍDEO
Veja nesta vídeo aula como usar Reflection para obter informações de métodos dinamicamente, usando MethodInfo, e como chamar estes métodos em tempo de execução a partir do seu nome em string
Guinther Pauli

0 comentários:
Postar um comentário