Freigeben über


Mais recursos do .NET RIA Services CTP Maio 2009

Olá pessoal, tudo certo?

Este é mais um post sobre os recursos do .NET RIA Services, que a Microsoft está desenvolvendo para a construção de aplicações RIA – Rich Internet Application de uma forma mais simplificada.

No post anterior, vimos os passos para a construção de uma primeira aplicação HelloWorld, que usava o dataGrid Control no Silverlight 3 Beta 1 para apresentar os dados de um banco de uma aplicação cliente.

Para este post, vamos repetir os passos iniciais de criação da solução RIA:

1. Criar a solução a partir do template “Silverlight Navigation Application”.

image

2. Adicionar um modelo de dados através de uma classe LINQ to SQL, criando assim um arquivo “DataClasses.dbml”.

image

3. Compilar a solução antes de seguir para o próximo passo!

4. Adicionar uma classe “Domain Services”, escolhendo as entidades que serão exportadas a partir do modelo de dados “Data Classes”.

image

Para a escolha das entidades, selecionei todas as tabelas do meu modelo, escolhendo também o modo de edição para cada entidade.

image

5. Compilar a solução antes de seguir para o próximo passo!

6. No projeto cliente, adicionar uma referência para os assemblies System.Windows.Controls.dll, System.Windows.Controls.Data.dll e System.Windows.Ria.Controls.dll

7. No arquivo “HomePage.xaml” do projeto cliente, adicionar uma referência ao namespace do Ria.Controls, como vemos no xmlns:ria:

image 

Neste ponto, temos uma solução que pode ser compilada e que exporta para a camada cliente as entidades e regras de negócio da solução. O principal objetivo do .NET RIA Services é tornar o desenvolvimento de aplicações RIA algo mais simples, gerando automaticamente as operações de CRUD e o mapeamento de entidades que serão passadas do lado servidor para o lado cliente. Assim, vamos agora criar um DomainDataSource para manipular no lado cliente as entidades passadas.

8. Vamos adicionar um DomainDataSource na página “HomePage.xaml” do lado cliente.

image 

9. Ao adicionar o Domain Service no lado do servidor, o Visual Studio gera um cliente DomainContext que faz a integração de entidades entre as partes da aplicação. Assim, devemos agora fazer o binding do DomainContext do lado cliente com nosso DataSource RIA. Para isso, adicione a referência ao projeto servidor na página “HomePage.xaml

image

10. Na sequência, fazemos o binding no DataSource ao nosso contexto, via a chamada <local:DomainService1/>

image

11. Finalmente, vamos adicionar o dataGrid Control e fazer o binding para o DomainDataSource que geramos para a apresentação dos dados. Primeiro, adicionar o xml namespace data na página “HomePage.xaml”.

image

12. Depois, adicionar o controle DataGrid mesmo, fazendo o binding para o customersDataSource, veja:

image

Pronto! Podemos compilar e rodar nossa aplicação, que deverá apresentar um grid preenchido com os dados da entidade Customer apenas. Veja que fizemos apenas uma carga, no LoadMethodName = “LoadCustomers”.

image

Para ilustrar um pouco mais essa demo, vamos adicionar um controle de paginação com o controle DataPager.

13. Para isso, adicionar no lado do cliente uma referência para o assembly System.Windows.Controls.Data.DataForm.dll. Se ainda não fez, agora é o momento.

14. Adicione o xml namespace na página “HomePage.xaml” para o controle.

image

15. Como último passo, adicionar o controle e fazer seu binding com o DomainDataSource.

image

Pronto! Rodando a aplicação, você verá nosso grid com o DataPager no rodapé, apresentando os dados de 3 em 3 linhas, como vemos abaixo:

image

Adicionando novos controles RIA, você pode trabalhar ainda com agrupamento de dados (GroupDescriptor), ordenação (SortDescriptor) e filtros (FilterDescriptor) enquanto manipula suas entidades no lado cliente.

O CTP de Maio do .NET RIA Services vem com uma documentação bem interessante, que oferece outros laboratórios que você pode conferir.

Em posts futuros, vamos continuar explorando esse framework que deve facilitar muito a construção de aplicações LOB sobre o Silverlight 3, oferecendo grande produtividade para as equipes de desenvolvimento. Por isso, continue ligado!

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

Waldemir.