2010-03-23 13 views
0

J'ai un service WCF par appel qui fournit des données pour les clients et est en même temps intégré à NServiceBus.
Tous les objets statefull sont stockés dans UnityContainer intégré dans l'hôte de service personnalisé.
NServiceBus est configuré dans l'hôte de service et utilise le même conteneur que les instances de service.
Chaque client a son propre contexte d'instance (décrit par Juval Lowy dans son livre au chapitre sur les services durables).Besoin d'aide/conseil sur WCF Service par appel et NServiceBus interop

Si j'ai besoin d'envoyer une requête sur le bus, j'utilise simplement une sorte de répartiteur et j'attends une réponse en utilisant Thread.Sleep(). Comme les services sont par appel c'est ok afaik.
Mais je suis un peu confus au sujet des messages de bus, ce service doit gérer et les fournir aux clients. Pour certaines données comme les cotations boursières, je mets juste à jour une sorte d'objet statefull et puis, lorsque les clients invoquent GetQuotesData() fournissent simplement des données à partir de cet objet. Mais il y a de nombreux messages de service comme nouvelle citation ajoutée et etc.
En ce moment j'ai une idée pour implémenter quelque chose comme "Postman daemon" =)) et stocke ce type de messages dans le contexte d'instance. Alors le client appellera "GetMail()", recevra ces messages et les analysera. Le problème est que les messages de NServiceBus sont "basés sur l'interface" et je ne peux pas les passer au-dessus de WCF, ainsi j'ai besoin de les convertir en types dièrnes de certaines classes abstraites.

Ne sais pas quelle est la meilleure façon de gérer cette situation. Sera très reconnaissant pour tout conseil à ce sujet.

Merci d'avance.

Répondre

1

Avez-vous considéré une solution «pure» NServiceBus pour communiquer avec vos clients? NServiceBus a déjà cette capacité "démon Postman". Les messages NServiceBus ne doivent pas nécessairement être des interfaces. Vous pouvez également utiliser des classes régulières.

Espérons que ça aide.

+0

Oui. Mais nous avons de nombreux types de clients sur des plates-formes différentes (y compris les mobiles), et je ne veux pas leur exposer les files d'attente. J'essaie de rester avec l'idée d'utiliser NServiceBus dans notre domaine uniquement pour l'interaction service-service, et toutes les communications client-service utilisent WCF. –

+0

Gardez à l'esprit que plusieurs de ces limitations seront tout aussi applicables lorsque vous essayez d'implémenter des rappels et des notifications avec WCF. –

+0

Merci =) Mais nous avons décidé de supprimer les rappels et ces fonctionnalités. Alors maintenant, le client demande simplement le service pour quelque chose, comme les données de synchronisation, obtenir des messages et etc. J'aime vraiment comment NSB fonctionne =) –