Composite Application Guidance for WPF - Parte 1

Olá pessoal, tudo certo?

Já falamos aqui sobre o Composite Application Guidance for WPF, o projeto codenome PRISM, para a construção de aplicações de composição. Veja o primeiro post aqui.

Esse pacote está dentro da família de recursos para a construção de interfaces de aplicações, onde vimos o Smart Client - Composite UI Application Block - CAB (Dez/2005-2006) e depois o Smart Client Software Factory - SCFS (Abr/2008). Um documento que descreve essa evolução é este aqui.

A discussão em 2006 já posicionava um modelo de Shell para uma interface composta como vemos a seguir:

image

De fato, enquanto o pacote CAB oferecia uma série de bibliotecas para a construção de smart clients, a SCSF fornecia uma fábrica de software completa para a geração automática de código, automatizando os passos de construção para o desenvolvedor.

A versão Composite Application Guidance for WPF (Release 1) compôe uma biblioteca de componentes (a CAL - Composite Application Library), não uma fábrica de software. Ao invés de templates, o pacote disponibiliza uma série de HOW TO's. Eles estão disponíveis no arquivo "Composite Application Guidance for WPF - June 2008.chm".

A instalação do pacote trás uma série de arquivos ".bat", que disparam alguns exercícios com o Composite WPF, veja:

  • Open Composite Application Library Solution.bat
  • Open Hello World Solution.bat
  • Open QS-Commanding Quickstart Solution.bat
  • Open QS-ConfigurationModularity Quickstart Solution.bat
  • Open QS-DirectoryLookupModularity Quickstart Solution.bat
  • Open QS-EventAggregation Quickstart Solution.bat
  • Open QS-UI Composition Quickstart Solution.bat
  • Open RI-StockTrader Reference Implementation Solution.bat

Entre os exemplos encontramos a aplicação StockTrader (projeto RI-StockTrader Reference Implementation Solution), que apresenta uma interface composta por 4 módulos implementados como projetos independentes dentro da solução.

image

A figura acima destaca os arquivos da solução (a esquerda), onde vemos os 4 projetos de módulos da interface. Do lado direito, a página principal da aplicação apresenta em destaque os quatro componentes do layout, Watch, New, Market e Position. Cada módulo é apresentado em uma caixa específica.

Esse é um dos principais benefícios que o modelo implementa, ou seja, a capacidade de registro de novos módulos funcionais de interfaces na mesma aplicação, permitindo que estes desenvolvimentos sejam independentes. No exemplo acima, cada módulo (Watch, New, Market e Position) poderia ter sido desenvolvido por um desenvolvedor de forma independente, em paralelo. Com essa abordagem, evitamos o conflito de desenvolvimento de funcionalidades sobre uma mesma interface, um mesmo formulário, típico de projetos de interfaces compostas.

O pacote PRISM também trabalha com o pattern MVP - Model View Presenter, para o controle da interface e comportamento da aplicação. O desenho a seguir apresenta um dos aspectos do modelo, o registro dos módulos de funcionalidades junto a interface Shell, que controla a apresentação para o usuário:

image

De fato, recomendo a leitura desse pacote. A próxima versão (Relase 2.0) deve trazer ainda novas funcionalidades, como por exemplo a total interoperabilidade entre mundo Web e mundo Windows. Isso significa que o mesmo desenvolvimento (código) deve gerar uma interface compatível com Web e Windows, um sonho de longa data. :)

Algumas referências mais veja aqui:

Smart Client - Composite UI Application Block (Dez/2005)
Ref.: https://msdn.microsoft.com/en-us/library/aa480450.aspx

patterns & practices - Smart Client Guidance (Jun/2006)
Ref.: https://www.codeplex.com/smartclient/Release/ProjectReleases.aspx?ReleaseId=4940

Smart Client Software Factory (Abr/2008)
Ref.: https://msdn.microsoft.com/en-us/library/aa480482.aspx

Composite Application Guidance for WPF - Release version 1.0 (Jun/2008)
Ref.: https://msdn.microsoft.com/en-us/library/cc707819.aspx

Em posts futuros, vamos continuar vendo alguns exemplos com o Composite for WPF e seus recursos. Um outro assunto importante é a estrutura da CAL - Composite Application Library, fique ligado.

Por enquanto é só! Até o próximo post :)

Waldemir.