2009-04-24 5 views
1

Je construis une application qui distribuera son traitement sur une ferme. Dans ma conception de base, j'ai deux services:WCF juste pour tous les cas?

Un "contrôleur" qui surveille les nouveaux travaux, les met en file d'attente et gère les résultats.

Un "worker" qui se lie à un contrôleur particulier. Le travailleur vérifiera le travail de son contrôleur et repoussera les résultats.

Dans le look breif que j'ai eu à WCF, il semble impliquer une SOA de style MEST-passing. Ce mécanisme ne semble pas jouter avec les types de communication que je vais faire.

Suis-je mélangé sur ce que WCF est? Y a-t-il encore une place dans ce monde pour le remoting .NET? Ou est-ce que je pense au problème dans un état d'esprit jurassique, pré-WCF.

Édition:
N'a pas fourni de détails. Le problème est que j'ai besoin de timebox le travail. Si un travail est retiré trop longtemps, je devrais être capable d'erreur toute l'affaire. Les exemples que j'ai vus tous semblent prendre une position «envoyer et oublier» vers les messages sortants. J'ai besoin d'un résultat ou d'une erreur déterministe dans un délai raisonnable. J'espère que cela clarifie.

Répondre

3

Je ne recommande pas la communication à distance pour la plupart des scénarios; il est non portable, un peu douloureux à gérer parfois, et BinaryFormatter est fragile (version intolérante).

WCF est un très bon ajustement pour la plupart des cas; Si vous travaillez sur une ferme, vous voudrez probablement exécuter sans sessions etc, mais je le fais de toute façon (pour la performance) - juste en utilisant le profil de base http.

Je ne comprends pas complètement le scénario que vous décrivez. Bien sûr, vous pouvez toujours lancer votre propre RPC en utilisant xml/json/binary - ou utiliser l'une des autres piles de communications pré-conservées ... ou un middleware comme MSMQ ou BizTalk.


Re la modification; WCF peut être utilisé de manière synchrone (en bloquant la réponse, avec (je crois) un timeout configurable). Vous pouvez faire des choses plus sophistiquées (rollback etc) avec des transactions distribuées, etc., mais cela ajoute de la complexité rapidement. Vous devez pondérer l'importance du temps d'arrêt, etc.

Si la durée est supérieure à celle que vous souhaitez attendre pour une invocation, vous pouvez également prendre en compte des éléments tels que le flux de travail. autour des produits de flux de travail, en plus de WF.

Questions connexes