2009-12-09 7 views
1

Type d'application: application web 3 niveaux avec SGBDR au backendComment transmettre des valeurs sales que de l'objet de transfert de données côté client au domaine côté serveur modèle

Plateforme de développement

Client: Silverlight 3/WPF services: services Web WCF avec la liaison de base Http

Définition du problème: Tentative de développement d'une application qui comporte une gestion métier côté client et des objets consommant beaucoup de données transmis au client. Une fois les objets visualisés et édités dans l'écran du client, ils doivent être transmis aux services côté serveur pour être sauvegardés. La question étant depuis que les données sont en quantité importante, je ne veux pas passer tout l'objet à nouveau aux services. Par exemple: - Si j'ai une collection de 10 lignes et 10 colonnes pour chaque ligne et seulement 2 colonnes sont mises à jour. Je devrais pouvoir passer seulement les données.

Question: Est-ce une bonne pratique et si oui, ce qui est la meilleure façon d'atteindre

Nous avons essayé des solutions j'ai essayé deux solutions 1: Avez-setters avec délégué d'événements qui font la notification de changement 2: Utiliser le type de données personnalisé

Répondre

0

Si vous utilisez les services Web WCF comme générés automatiquement par VS, vous êtes pratiquement contraint de transmettre des classes connues; Ainsi, pour transmettre de plus petits morceaux d'information, vous devrez définir de nouvelles classes spécifiquement à cette fin. De tels objets sont, je crois, communément appelés DTO (Data Transfer Objects). Donc, pour votre scénario avec le 10 x 10 matrice, votre DTO serait peut contenir une liste de {x, y, valeur} triplets.

Si vous utilisez un service Web REST (et composer votre propre), vous pouvez éviter les classes DTO entièrement et il suffit de créer un schéma XML qui est suffisant pour transmettre l'information; par exemple, un élément de niveau supérieur avec des sous-éléments de la forme:

<Deltas> 
    <Delta x="3" y="9"> ...value subelementgoes here </Delta> 
    ... more Delta elements 
</Deltas> 

Votre service REST devrait alors faire le travail de mise à jour incrémentale les enregistrements de base de données côté serveur. Vous auriez probablement besoin d'une URL REST distincte pour chaque type de données.

HTH

Bill

Questions connexes