Salutations, Dans notre société, nous développons le service wcf. Ceci est utilisé comme un serveur et cela fonctionne très bien. Passez la souris sur le souhait du client qui, après s'être connecté à l'application, souhaite voir quels utilisateurs sont également connectés. Je lis à propos de CallbackContract (basé sur une application de chat wcf). Comment pouvons-nous atteindre cet objectif?Multiple DataContract Callbackcontract
Répondre
question similaire a demandé here
Vous pouvez deffinetly gérer les utilisateurs connectés à l'intérieur du serveur. J'ai créé un modèle personnel pour faire face à de telles situations, et il va ussually comme ceci:
créer une classe de client à l'intérieur du serveur WCF qui contiendra toutes les informations nécessaires sur le client.
créer 2 méthodes dans le service: logIn, logOut. la méthode de connexion devrait être capable de rassembler toutes les informations sur le client que vous voulez stocker. Assurez-vous de définir les propriétés qui peuvent identifier de manière unique une instance de client. Lorsque le client accède au serveur, il appelle la méthode de connexion, ce qui permet au serveur de rassembler et de sauvegarder les informations du client. Si vous utilisez des rappels, c'est l'endroit où enregistrer l'objet contextuel CallBack, dans l'obejt du client. Vous pouvez maintenant enregistrer l'objet Client dans l'instance du serveur WCF (j'utilise un dictionnaire). Lorsque le client se déconnecte, il appelle la méthode de déconnexion et le serveur supprime l'entrée.
- créer une méthode KeepAlive dans le serveur qui vérifie régulièrement les clients connectés pour voir s'ils sont toujours connectés (en cas de défaillance du réseau ou de l'application, un client peut ne pas appeler la méthode de déconnexion).
Je pense que c'est le moyen le plus simple (pas dire qu'il est le meilleur) pour gérer clients dans le serveur. Il n'y a pas problème d'avoir plusieurs clients à partir du même ordinateur (vous enregistrez le contexte quand un logges client) en tant que vous avez une façon de façon unique l'identité des clients. En ce qui concerne votre dernière question, avoir plusieurs services ne devrait pas être un problème . En fait, vous avez le même serveur WCF avec différents contrats (et terminaux) pour les différents services que vous proposez. Tous les contrats résident dans la même instance de serveur WCF afin qu'ils puissent tous accéder à la liste du client connecté. Si vous avez d'autres questions, je voudrais être heureux de répondre à eux.
Vous pouvez trouver le code dont vous avez besoin pour construire réellement le service WCF exigent que vous here
wow..thank vous Neil il me aide beaucoup. Juste une question de plus. Pouvez-vous s'il vous plaît me donner quelques conseils sur la méthode KeepAlive qui vérifiera régulièrement les clients connectés? –
Fondamentalement, c'est un ping, le serveur appelle une méthode sur le client appelé public void ping(), et si l'appel aboutit à une CommuicationException, cela signifie que le client ne peut pas répondre et doit être retiré de la liste des clients en ligne. cette méthode doit être placée dans un temporisateur et réglée pour faire défiler tous les clients toutes les minutes – Neil
comment est-ce que je peux faire ceci? –