O que são os serviços WCF RIA?

102

Eu odeio o site do MSDN para serviços WCF RIA. Não diz o que é, apenas diz o que faz. Diz o que pode alcançar, mas não diz por que preciso disso.

Por exemplo:

"Um problema comum ao desenvolver uma solução RIA de n camadas é coordenar a lógica do aplicativo entre a camada intermediária e a camada de apresentação".

Bem, isso não significa muito para mim.

"Os serviços RIA resolvem esse problema fornecendo componentes de estrutura, ferramentas e serviços que tornam a lógica do aplicativo no servidor disponível para o cliente RIA sem exigir que você duplique manualmente essa lógica de programação. Você pode criar um cliente RIA que esteja ciente das regras de negócios e saiba que o cliente é atualizado automaticamente com a lógica da camada intermediária mais recente toda vez que a solução é recompilada. "

Então, ele baixa DLLs do servidor? É um metadado que descreve as regras para os dados?

Então o que é? É apenas um add-on do VS 2010 para RAD? Ou é uma tecnologia em cima do WCF ou embaixo dele ou o quê? Onde isso vive? Com dados, com servidor, o quê?

Agradeço se você pode resumir isso para mim, por favor.

Aliostad
fonte
3
É uma tecnologia em cima do WCF, que usa geração de código e código do lado do servidor e do lado do cliente. Ele se concentra principalmente em embaralhar dados do servidor para o cliente e vice-versa, com validação e outras coisas.
Rangoric
1
@Rangoric: Você pode postar isso como uma resposta. Respostas curtas também podem ser boas respostas.
Henk Holterman
7
Ah, lol, eu interpretei mal como RIAA e fiquei maluco.
Mateen Ulhaq
É bom saber: RIA = Rich Internet Applications (thin clients Silverlight), bem explicados aqui . Os serviços WCF RIA são serviços RIA sobre WCF, vinculando o thin client ao servidor. "O WCF RIA Services recupera dados de um banco de dados do Microsoft Structured Query Language (SQL) Server e disponibiliza esses dados para um cliente Silverlight onde são apresentados para edição e visualização "
minutos

Respostas:

109

Os serviços RIA são uma tecnologia do lado do servidor que gera automaticamente objetos do lado do cliente (Silverlight) que cuidam da comunicação com o servidor para você e fornecem validação do lado do cliente.

O objeto principal dentro de um serviço RIA é um DomainService, geralmente um LinqToEntitiesDomainServiceque está conectado a um modelo LinqToEntities.

O principal a ser lembrado em serviços RIA é que ele é principalmente um truque de construção sofisticado. Quando você cria um serviço de domínio e compila sua solução, uma representação do lado do cliente de seu serviço de domínio é gerada. Essa representação do lado do cliente possui a mesma interface. Suponha que você crie um serviço de domínio do lado do servidor CustomerServicecom um método IQueryable<Customer> GetCustomersByCountry. Quando você constrói sua solução, uma classe é gerada dentro de seu projeto Silverlight chamada CustomerContextque possui um método GetCustomersByCountryQuery. Agora você pode usar esse método no cliente como se o estivesse chamando no servidor.

Atualizações, inserções e exclusões seguem um padrão diferente. Ao criar um serviço de domínio, você pode indicar se deseja habilitar a edição. Os métodos correspondentes para atualização / inserção / exclusão são gerados no serviço de domínio do lado do servidor. No entanto, a parte do lado do cliente não possui esses métodos. O que você tem em mãos CustomerContexté um método chamado SubmitChanges. Então, como isso funciona:

  • Para atualizações, você simplesmente atualiza as propriedades dos clientes existentes (que você recuperou via GetCustomersByCountryQuery).
  • Para inserções, você usa CustomerContext.Customers.Add(new Customer(...) {...}).
  • Para exclusões, você usa CustomerContext.Customers.Remove(someCustomer).

Quando terminar de editar, você liga CustomerContext.SubmitChanges().

Quanto à validação, você pode decorar seus objetos do lado do servidor com atributos de validação do System.ComponentModel.DataAnnotationsnamespace. Novamente, quando você constrói seu projeto, o código de validação agora é gerado automaticamente para os objetos do lado do cliente correspondentes.

Espero que esta explicação ajude você um pouco mais.

Ronald Wildenberg
fonte
Certamente que sim. Obrigado por compartilhar isso. Gostaria que você pudesse atualizar o site do MSDN. Agora, e se eu adicionar uma propriedade ao meu objeto de domínio? Ele se atualizaria?
Aliostad de
Eu adicionei algumas informações adicionais sobre atualizações, inserções e exclusões.
Ronald Wildenberg de