2009-12-22 6 views

Répondre

3

Si un contrat duplex n'est pas applicable dans votre environnement, vous devrez recourir à l'interrogation. Votre méthode initiale peut renvoyer un identificateur (un GUID peut-être), puis vous pouvez effectuer des appels ultérieurs à une autre méthode pour vérifier la progression et transmettre l'identificateur.

Cela vous obligera évidemment à stocker les informations de progression quelque part (comme une session ou une base de données), ce qui n'est pas génial.

3

Oui - utilisez un duplex contract et signalez la progression de temps en temps en utilisant des rappels.

2

Cela dépend un peu des services que vous appelez et de la durée de vos opérations.

Si vous lancez 1000 requêtes sur un même service, vous risquez d'être touché par la limitation du service avant que tous les appels au service puissent être reçus.

Il existe un phénomène similaire côté client. WCF autorisera seulement tant d'appels simultanés à la fois. C'est configurable dans une certaine mesure, mais je serais surpris si 1000 appels simultanés fonctionneraient sans un hick-up ou deux.

Si les appels finissent par être plus ou moins synchrones, je placerais toutes les requêtes dans une file d'attente et traiterais chaque appel à tour de rôle. Vous pouvez ensuite surveiller la file d'attente à partir de votre interface utilisateur pour mettre à jour les progrès au fur et à mesure que les appels au service sont terminés.

Si votre architecture prend en charge 1000 appels simultanés, alors la liaison duplex sera un bon ajustement. Vous pouvez simplement interroger pour l'achèvement.

Vous pouvez également créer un service pub/sub que le service cible met à jour lorsque les requêtes sont terminées. Votre client accèderait simplement aux événements du service pub/sub à mesure que les résultats des requêtes deviendraient disponibles.

+0

Je suis d'accord avec le traitement dans un autre domaine d'application. L'exemple de distributeur NServiceBus est un motif sympa. Puisque les travailleurs rapportent au Distributeur, je parie que vous pourriez rapporter les progrès de cette file d'attente. –

+0

NServiceBus a l'air intéressant. Je vais essayer. – Rohit