2012-02-16 4 views
0

Je pense à changer nos synchronisations périodiques existantes avec des événements basés et essayait de trouver un mécanisme, qui existe déjà, mais qui a échoué jusqu'à présent, alors peut-être que certains d'entre vous vont vous aider. Je vais essayer d'expliquer comment je pense que cela pourrait fonctionner et si quelqu'un sait que c'est quelque part déjà fait, s'il vous plaît donnez-moi des indications. Donc, le système ressemblerait à ceci:Abonnements persistant

enter image description here

maintenant - la partie intéressante:
- J'ai besoin que le client souscripteur peut recevoir des événements, même si ces événements ont été générés quand il était hors ligne,
- mais l'absence de certains clients ne devrait pas bloquer la réception d'événements pour d'autres clients. Exemple: Courriel: Je peux envoyer un courriel à plusieurs destinataires, et je peux envoyer un deuxième courriel aux mêmes destinataires sans attendre que tout le monde lise le premier, et chaque destinataire recevra tous les courriels, même s'ils n'étaient pas en ligne à le moment, même si le courrier électronique tombe en panne, personne ne perd les emails.

Question est-ce que WCF out of the box supporte cela, si oui, comment ressemblerait une telle configuration?
Si WCF ne supporte pas cela, existe-t-il des projets open source, qui peuvent gérer un tel scénario?

Répondre

1

WCF ne supporte pas ce hors de la boîte. Vous pouvez créer un modèle pub-sub en utilisant WCF, Juval Lowy a parlé de cela en 2006 ou vous pouvez rouler le vôtre en utilisant netMsmqBinding.

Cependant, il existe un framework open source qui se trouve au-dessus de MSMQ appelé NServiceBus, ce qui est très rapide pour démarrer et fonctionner. Cela n'utilise cependant pas WCF.

MISE À JOUR

En aparté - la conception d'abonnement que vous fournissez ci-dessus est à mon avis fragile, car il semble que vous centralisez la gestion des abonnements/stockage pour l'ensemble du système. Ce qui est mieux est un modèle de gestion des abonnements distribués:

enter image description here

+0

J'ai vérifié NServiceBus - et il fait tout ce qu'il faut. En ce qui concerne la centralisation du stockage des abonnements - je pensais que ce serait plus simple à gérer, s'il y a un seul point pour les éditeurs/abonnés, ce n'est pas ce que fait BizTalk? – Giedrius

+1

Vous avez raison, BizTalk conserve les abonnements de manière centralisée. Toutefois, Microsoft recommande de mettre en cluster le DB de boîte de message BizTalk qui contient les données de gestion d'abonnement. De cette façon, vous pourriez dire que les données sont distribuées. –