2009-02-20 5 views
1

J'ai une structure N-tier composée de nœuds WCF. Je dois parfois passer de très gros volumes de données d'un nœud terminal au nœud supérieur et je souhaite éviter de désérialiser le très grand champ de données pendant les sauts intermédiaires. Je ne peux pas passer directement au sommet en raison de notre stratégie de chute. Y a-t-il un moyen d'éviter la désérialisation de mon champ? Merci pour toute aideWCF Passthrough

Répondre

2

Peut-être que vous pouvez faire quelque chose avec un événement [OnDeserializing]?

Voir this.

De même, les événements de sérialisation sont traités dans "Programming WCF Services" (2ème édition) par Juval Lowy dans le chapitre 3, pages 107-110. Je ne suis pas sûr si vous pouvez complètement court-circuiter la désérialisation si ... Je n'ai jamais essayé.

1

Je pense que Terry est sur la bonne voie. Je regarderais cet événement et en utilisant un contrat de message, vous devriez être capable de marquer la partie du message que vous voulez juste passer. Vous devrez probablement effectuer une manipulation de message (déchirer le message entrant, créer un message sortant "personnalisé"), mais vous devriez pouvoir continuer le message sans être regardé.

Effectuer une recherche WS-Addressing aussi; cela peut fournir un modèle pour cela.

0

Je me demande si votre stratégie de basculement se prête à une sorte de "claquement sur le lien". Vous feriez votre appel initial au noeud intermédiaire, qui le transmettrait finalement au noeud terminal. Le nœud terminal répond avec les informations nécessaires pour que le nœud initial s'y connecte directement. De cette façon, l'équilibrage de charge ou le basculement pourrait déterminer quel nœud terminal devrait être utilisé, mais une fois cette détermination effectuée, une connexion directe pourrait avoir lieu. Bien sûr, vous voudriez limiter la durée de cette connexion directe pour permettre à la stratégie de basculement de changer d'avis au fil du temps.