2012-08-08 4 views
2

Je veux la carte id connexion à l'utilisateur de son lorsqu'ils se connectent à ma classe de moyeu, ce qui est une bonne stratégie pour le faire efficacement? Je veux associer le profil d'un utilisateur à son ID de connexion, donc quand je vérifie les utilisateurs dans un groupe de signalisation particulier, je peux facilement les informations de profil de chaque utilisateurQuelle est la meilleure façon de les utilisateurs aux ids de connexion

Répondre

4

Techniquement, si vous ne vous souciez pas de maintenir l'état, vous pouvez le résoudre avec un pauvre homme est en mémoire ConcurrentDictionary<string, ConcurrentBag<string>>, mais je suppose que vous essayez d'être un peu plus évolutive/tolérance aux pannes que cela.

JabbR, qui est l'application phare de chat de test pour le framework SignalR, stocke les détails du client connecté dans une table dans son DB (qui se trouve être SQL). Il a un mappage du ChatUser unique -> à de nombreuses instances ChatClient (un-à-plusieurs). Ainsi, lorsqu'un utilisateur logique est connecté, il sait qui est cet utilisateur de manière logique et peut également s'assurer qu'il peut diriger les messages appropriés vers toutes les instances clientes connectées que l'utilisateur peut actuellement ouvrir. You can find that specific implementation here si vous souhaitez en savoir plus à ce sujet.

+0

Avez-vous envisager la solution pour concurrency db? Aussi, comment gérez-vous quand le serveur tombe en panne? Tous les mappages sont toujours sauvegardés dans la base de données, donc devrez-vous tronquer la table chaque fois que vous démarrez l'ap? – anthonypliu

+0

Bien sûr, vous devez gérer tous les problèmes habituels de concurrence/évolutivité que vous auriez à gérer dans n'importe quelle application. En ce qui concerne les utilisateurs connectés, oui, vous devez savoir ce qui se passe lorsque vous démarrez à nouveau. JabbR fait cela en effaçant toute la table pendant le début de l'application, bien que ce soit la force simpliste, brute et sans doute pas la solution la plus élégante, vous pourriez avoir ... surtout pour une ferme a accueilli l'application: https://github.com/davidfowl/ JabbR/blob/maître/JabbR/App_Start/Bootstrapper.cs # L146 –

+0

Merci pour la réponse, mais quelle serait votre suggestion dans ce cas-là. Comment serais-je capable de le gérer dans une application hébergée en batterie. Un serveur s'éteint, comment va-t-il savoir à partir de là quels utilisateurs retirer de la table? – anthonypliu

Questions connexes