J'ai cherché des moyens d'implémenter une messagerie de type gmail dans un navigateur et suis arrivé au concept Comet . Cependant, je n'ai pas été en mesure de trouver une bonne implémentation .NET qui me permette de le faire dans IIS (notre application est écrite en ASP.NET 2.0).
Les solutions que j'ai trouvées (ou auxquelles je pourrais penser, d'ailleurs) nécessitent de laisser un thread en cours d'exécution par utilisateur - afin qu'il puisse lui renvoyer une réponse une fois qu'il reçoit un message. Cela ne s'adapte pas du tout, bien sûr.
Ma question est donc la suivante: connaissez-vous une implémentation ASP.NET pour Comet qui fonctionne d'une manière différente? Est-ce même possible avec IIS?
Réponses:
Comet est difficile à mettre à l'échelle avec IIS en raison de la connectivité persistante de comet, mais une équipe étudie actuellement les scénarios Comet. Regardez également le blog d'Aaron Lerch car je crois qu'il a fait quelques premiers travaux sur Comet dans ASP.NET.
la source
WebSync est un serveur Comet évolutif conforme aux normes qui s'intègre directement dans le pipeline IIS / .NET. Il est également disponible sur demande en tant que service hébergé.
Il prend officiellement en charge jusqu'à 20 000 connexions client simultanées par nœud de serveur, mais des tests individuels l'ont vu atteindre 50 000. Le débit des messages est optimal autour de la barre des 1 000 à 5 000 clients simultanés, avec des messages délivrés jusqu'à 300 000 par seconde à partir d'un seul nœud.
Il inclut la prise en charge côté client de JavaScript, .NET / Mono, iOS, Mac OS X, Java, Silverlight, Windows Phone, Windows Runtime et .NET Compact, avec prise en charge côté serveur pour .NET / Mono et PHP.
Le clustering est pris en charge à l'aide de SQL Server ou Azure Caching prêt à l'emploi, mais les fournisseurs personnalisés peuvent être écrits pour à peu près tout (Redis, NCache).
Clause de non-responsabilité: Je travaille pour la société qui développe ce produit.
la source
J'ai récemment écrit un exemple simple de serveur de conversation à interrogation longue utilisant des contrôleurs asynchrones MVC 3 basé sur un excellent article de Clay Lenhart
Vous pouvez utiliser l' exemple sur un déploiement AppHarbor que j'ai configuré en fonction de la source du projet BitBucket.
Aussi, plus d'informations disponibles sur mon article de blog expliquant le projet .
la source
En fait, il existe de nombreux choix pour créer un site Web pris en charge par ajax avec ASP.NET, mais honnêtement, PokeIn est le moyen le plus simple de créer une application Web prise en charge par la comète ajax. Cela a sauvé l'un des projets de mon entreprise.
la source
Vous pouvez également regarder la Kaazing Enterprise Gateway qui a fait une version de production de leur passerelle webSocket [HTML5] qui remplace complètement la manière de la comète et permet des connexions en duplex intégral entre les navigateurs et les serveurs d'applications.
Vous pouvez également consulter les démos Light Streamer
la source
Il y a longtemps, j'ai utilisé un site de chat qui utilisait un serveur de streaming http personnalisé. En fait, j'ai reproduit ce logiciel à un moment donné par pure curiosité, et c'est assez facile à faire, je pense. Je n'essaierais jamais d'implémenter un type similaire de «requête infinie» dans IIS, en particulier dans ASP.NET, car les requêtes lient indéfiniment un thread de pool de threads (ou un thread IO, si des gestionnaires asynchrones sont utilisés), ce qui signifie que vous ne pouvez gérer autant par serveur que votre configuration de pool de threads le permet.
Si j'avais un besoin légitime fort d'une telle fonctionnalité, j'écrirais honnêtement un serveur http personnalisé pour cela.
Je sais que cela ne répond pas vraiment à votre question, mais j'ai pensé que la contribution pourrait être pertinente.
la source
Le groupe WS-I a publié quelque chose appelé "Reliable Secure Profile" qui a une implémentation Glass Fish et .NET qui interagissent apparemment bien.
Avec un peu de chance, il existe également une implémentation Javascript .
Il existe également une implémentation Silverlight qui utilise HTTP Duplex. Vous pouvez connecter javascript à l' objet Silverlight pour obtenir des rappels lorsqu'une poussée se produit.
Il existe également des versions commerciales payantes .
la source
Je pense que l'approche Comet n'est pas vraiment évolutive à moins que vous ne soyez prêt à étendre la ferme Web horizontalement (en ajoutant plus de serveurs Web au mélange). La façon dont cela fonctionne est qu'il laisse une connexion TCP ouverte par session utilisateur, juste pour que le serveur puisse envoyer des éléments dans cette connexion de temps en temps pour informer immédiatement l'utilisateur d'un changement ou d'une activité.
la source