1

J'ai fait des recherches sur les services RIA avec silverlight 4 et en envisageant de l'utiliser. Passer de Silverlight à Silverlight me donne quelques inquiétudes quant à la maturité de Silverlight pour les applications basées sur les données.Comment les services RIA permettent-ils l'efficacité des données relationnelles?

Je regardais les requêtes de données relationnelles. Disons que j'ai une table «personne» et une table «voitures». Plusieurs voitures peuvent être associées à une personne. Maintenant, si je fais des requêtes avec des données relationnelles, je dois spécifier d'inclure les tables supplémentaires à renvoyer au client à partir du serveur. Montré ici:

http://timheuer.com/blog/archive/2010/01/05/master-details-with-ria-services-and-includedresults.aspx

Je suis un peu préoccupé par l'efficacité. Si je fais quelque chose comme ça, il semble que j'envoie potentiellement plusieurs lignes de la table de voiture pour chaque rangée de personne (depuis son un à plusieurs). Cependant, je peux seulement vouloir le nom de la voiture et pas d'autres colonnes. Un exemple plus complexe avec un tas de jointures relationnelles à d'autres tables pourrait devenir moche. Y a-t-il un moyen d'y remédier? Je ne vois pas beaucoup d'informations sur les types personnalisés/complexes ou comment les services ria gèrent les vues de base de données. Une autre de mes pensées est que si j'ai des données relationnelles qui se rebouclent sur elles-mêmes, cela bloquera une requête. Par exemple, si une personne se connecte à une voiture et à une voiture, elle se connecte à une autre table et cette table renvoie à la personne. Il pourrait apparemment boucler pour toujours?

Répondre

2

La quantité de données transférées (ou non) avec les services RIA dépend entièrement de vous. Vous n'êtes pas obligé d'inclure toutes les données de table enfant. Oui, il est possible d'écrire des requêtes de données vraiment inefficaces, mais il est également possible de les rendre optimales.

Les boucles sans fin ne se produisent généralement pas dans les modèles ER. Ce n'est pas différent d'exécuter une jointure sur les tables en SQL. Si vous êtes vraiment préoccupé par l'efficacité maximale (improbable au début), vous utiliserez probablement le processus de stockage SQL du côté serveur et frapperez ces processeurs avec des paramètres spécifiques pour faire le travail.

J'ai construit plusieurs grands systèmes avec Silverlight 3 et travaille maintenant avec 4 et personnellement, je vais avoir du mal à revenir à ASP.Net maintenant. Il est plus facile de développer dans (une fois que vous apprenez à connaître ses bizarreries) et est vraiment très amusant :)

Espérons que cela aide.

+0

Pour les requêtes complexes, incluez-vous généralement les tables ou utilisez-vous simplement l'ID de clé étrangère, puis appelez une autre requête (par exemple getNameFromID (int id))? – Adam

+0

Principalement pour réduire le trafic réseau, nous demandons des éléments spécifiques par ID. Si nous demandons une liste d'éléments (par exemple pour la sélection), nous renvoyons généralement des paires d'identifiants et de noms d'affichage et pas grand-chose d'autre (ceci suppose que nous extrayons tous les détails au cas par cas). –