2010-09-14 8 views
1

Dans mon application, je dois envoyer des notifications d'événements en temps réel du serveur aux clients. La quantité de données à transmettre est très petite, principalement et Id. Le nombre de clients qui écoutent simultanément peut être d'environ 100 et je devrais publier une notification toutes les 2 à 3 secondes. Le serveur et le client sont construits en utilisant .Net et WCF.Amélioration des performances des services WCF fonctionnant avec des données en temps réel

Compte tenu de ces exigences, j'ai construit un ensemble de services WCF qui seront exécutés sur un cluster de serveurs à charge équilibrée. Le mode contextuel d'instance est Par appel et il n'y a pas besoin de sessions etc.

J'utilise actuellement BasicHttpBinding. La liaison TCP sera-t-elle meilleure? Est-ce qu'il fonctionne sur IIS 5 ou 6? Si non pourquoi?

Quelle configuration de sérialisation peut fonctionner le mieux?

Quelles sont les choses que je dois faire pour m'assurer d'obtenir des performances maximales?

Modifier - Ajout de plus d'informations en fonction de certaines des réponses -

je serai l'hôte d'un petit service WCF dans le processus client à l'aide d'hébergement manuel. Le serveur appelle simplement ce service sur chaque client pour transmettre les données à tous les clients.

Répondre

2

D'abord, avez-vous envisagé d'utiliser la messagerie pour ce que vous essayez d'accomplir?

En réponse à la liaison TCP fonctionnera mieux que BasicHttpBinding- presque certainement oui. Si vous souhaitez utiliser TCP, vous ne pouvez pas utiliser IIS-look into WAS avec Windows Server 2008. Si vous êtes bloqué avec Windows Server 2003, vous devrez alors héberger un service Windows à la place.

Vous avez fait un bon choix en choisissant par appel - c'est le mode de gestion d'instance préféré pour créer des services WCF évolutifs.

Edit:

Maintenant, vous avez mettre à jour votre question, je vous recommande de jeter un oeil à Pub/Sub framework de IDesign si vous voulez coller avec WCF. Je voudrais aussi regarder Pub/Sub with MSMQ in WCF et aussi avec des produits "Vanilla" tels que Tibco RV.

+0

s'il vous plaît voir la modification - Je n'ai pas besoin de la liaison duplex. Avec la messagerie, voulez-vous dire MSMQ? Pourriez-vous élaborer un peu sur cette partie? –

+0

J'ai déjà construit un petit framework pub-sub utilisant les services WCF. Je veux juste l'optimiser pour la performance. –

0

Si vous devez transmettre des données du service aux clients, vous avez besoin de sessions et vous avez besoin d'une liaison duplex - NetTcpBinding ou WSDualHttpBinding. Cela ne fonctionnera pas avec BasicHttpBinding, car cela permet uniquement d'extraire des données (les pools de clients le service pour les modifications). Push data signifie que le service envoie des données aux clients en cas de besoin.

NetTcpBinding toujours une session crete. Il ne peut pas être hébergé dans IIS 6 ou plus ancien. NetTcpBinding est autorisé uniquement dans le service d'activation Windows (WAS) qui est l'extension d'IIS 7.x. Pour les systèmes plus anciens, vous avez besoin de self hosting = service windows.

Edit:

D'après votre description que vous avez besoin pubsub d'échange de messages.

Questions connexes