Qu'est-ce que les services WCF RIA?

102

Je déteste le site MSDN pour les services WCF RIA. Il ne dit pas ce que c'est, il dit seulement ce qu'il fait. Il dit ce qu'il peut accomplir mais ne dit pas pourquoi j'en ai besoin.

Par exemple:

"Un problème courant lors du développement d'une solution RIA à n niveaux est la coordination de la logique d'application entre le niveau intermédiaire et le niveau de présentation".

Eh bien, cela ne signifie pas grand-chose pour moi.

«Les services RIA résout ce problème en fournissant des composants de structure, des outils et des services qui mettent la logique d'application sur le serveur à la disposition du client RIA sans que vous ayez à dupliquer manuellement cette logique de programmation. Vous pouvez créer un client RIA qui connaît les règles métier et sachez que le client est automatiquement mis à jour avec la dernière logique de niveau intermédiaire chaque fois que la solution est recompilée. "

Alors, télécharge-t-il les DLL du serveur? S'agit-il d'une métadonnée décrivant les règles pour les données?

Alors c'est quoi? Est-ce juste un module complémentaire VS 2010 pour RAD? Ou est-ce une technologie au-dessus de WCF ou en dessous ou quoi? Où est-ce que ça vit? Avec des données, avec un serveur, quoi?

J'apprécie si vous pouvez résumer ceci pour moi s'il vous plaît.

Aliostad
la source
3
C'est une technologie au-dessus de WCF, qui utilise la génération de code et le code côté serveur et côté client. Il se concentre principalement sur le brassage des données du serveur au client et inversement, avec validation et autres choses.
Rangoric
1
@Rangoric: Vous pouvez publier ça comme réponse. Des réponses courtes peuvent également être de bonnes réponses.
Henk Holterman
7
Ah, lol, je l'ai mal lu comme RIAA , et je suis devenu psychopathe.
Mateen Ulhaq
Bon à savoir: RIA = Rich Internet Applications (clients légers dont Silverlight), bien expliqué ici . Les services WCF RIA sont des services RIA sur WCF, reliant le client léger au serveur. «Les services WCF RIA récupèrent les données d'une base de données Microsoft Structured Query Language (SQL) Server et les mettent à la disposition d'un client Silverlight où elles sont présentées pour modification et affichage »
minutes

Réponses:

109

Les services RIA sont une technologie côté serveur qui génère automatiquement des objets côté client (Silverlight) qui prennent en charge la communication avec le serveur pour vous et fournissent une validation côté client.

L'objet principal à l'intérieur d'un service RIA est un DomainService, généralement un LinqToEntitiesDomainServicequi est connecté à un modèle LinqToEntities.

La chose clé à retenir dans les services RIA est qu'il s'agit principalement d'une astuce de construction sophistiquée. Lorsque vous créez un service de domaine et compilez votre solution, une représentation côté client de votre service de domaine est générée. Cette représentation côté client a la même interface. Supposons que vous créez un service de domaine côté serveur CustomerServiceavec une méthode IQueryable<Customer> GetCustomersByCountry. Lorsque vous générez votre solution, une classe est générée à l'intérieur de votre projet Silverlight appelée CustomerContextqui a une méthode GetCustomersByCountryQuery. Vous pouvez maintenant utiliser cette méthode sur le client comme si vous l'appeliez sur le serveur.

Les mises à jour, les insertions et les suppressions suivent un modèle différent. Lorsque vous créez un service de domaine, vous pouvez indiquer si vous souhaitez activer la modification. Les méthodes correspondantes de mise à jour / insertion / suppression sont ensuite générées dans le service de domaine côté serveur. Cependant, la partie côté client n'a pas ces méthodes. Ce que vous avez sur votre CustomerContextest une méthode appelée SubmitChanges. Donc comment ça fonctionne:

  • Pour les mises à jour, vous mettez simplement à jour les propriétés des clients existants (que vous avez récupérés via GetCustomersByCountryQuery).
  • Pour les inserts, vous utilisez CustomerContext.Customers.Add(new Customer(...) {...}).
  • Pour les suppressions, vous utilisez CustomerContext.Customers.Remove(someCustomer).

Lorsque vous avez terminé l'édition, vous appelez CustomerContext.SubmitChanges().

En ce qui concerne la validation, vous pouvez décorer vos objets côté serveur avec des attributs de validation de l' System.ComponentModel.DataAnnotationsespace de noms. Là encore, lorsque vous générez votre projet, le code de validation est désormais automatiquement généré pour les objets côté client correspondants.

J'espère que cette explication vous aidera un peu plus loin.

Ronald Wildenberg
la source
C'est certainement le cas. Merci de l'avoir partagé. Je souhaite que vous puissiez mettre à jour le site MSDN. Maintenant, que faire si j'ajoute une propriété à mon objet de domaine? Se mettrait-il à jour?
Aliostad
J'ai ajouté des informations supplémentaires sur les mises à jour, les insertions et les suppressions.
Ronald Wildenberg