2011-07-18 4 views
2

Je suis assez nouveau à WCF et j'essaie de comprendre comment fonctionne le streaming.J'ai fondamentalement un service Web qui est censé retourner des informations à partir d'un db.Les données retournées sont potentiellement très grandes.Je me demandais si Si je comprends bien les choses, ma méthode de service Web devrait renvoyer un objet de flux. Mais comment transmettre des données au flux? S'agit-il simplement de sérialiser chaque objet et de l'écrire dans le flux? Si oui, comment exactement la sérialisation serait-elle faite? Encore une fois, un exemple simple serait très apprécié.Comment utiliser la diffusion en continu avec les services WCF renvoyant un grand ensemble de données?

Répondre

3

Vous devez simplement définir la propriété TransferMode de la liaison à la valeur Streamed et travailler avec vos services WCF comme vous le feriez. L'infrastructure WCF fera tout le travail automatiquement.

Voici un lien plus utile:

Streaming Message Transfer

+0

Donc, je n'ai pas besoin de retourner un objet Stream ??? Si mon service Web renvoie une grande liste par exemple, cela fonctionnerait-il encore? –

+0

Il n'est pas nécessaire de retourner le flux. Cela fonctionnera également avec de grandes listes. J'ai également ajouté un nouveau lien à ma réponse. – platon

+0

Notez que la modification du TransferMode de Binding en streaming donne des limitations à l'interface du service. C'est probablement une bonne idée de placer les méthodes streamées dans une interface propre et de garder le reste des méthodes dans une interface qui reste tamponnée (ce qui est la valeur par défaut). –

0

En fait, je revist l'architecture, comme le retour de grands résultats tout service (WCF, ASMX, etc.) est une odeur d'architecture.

Il existe très peu de raisons acceptables de renvoyer des jeux de résultats volumineux à partir d'un service. Une combinaison de plus/meilleur filtrage et mise en œuvre de la pagine sont la solution. Si vous ne faites que placer un simple placage de service sur votre base de données, observez les services de données WCF, car le filtrage et la pagination sont intégrés directement dans le framework. Sinon, examinez les services de données WCF pour voir ce qu'ils font et imiter votre service.

Questions connexes