Question

J'ai cherché des moyens d'implémenter une messagerie de type gmail dans un navigateur et suis arrivé à l'adresse Comet concept. Cependant, je n'ai pas réussi à trouver une bonne implémentation .NET qui me permet 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 a reçu un message. Cela ne va pas du tout, bien sûr.

Donc, ma question est la suivante: connaissez-vous une implémentation ASP.NET pour Comet qui fonctionne différemment? Est-ce même possible avec IIS?

Était-ce utile?

La solution

Comet est difficile à faire évoluer avec IIS en raison de la connectivité persistante de Comet, mais une équipe examine actuellement les scénarios de Comet. Consultez également le le blog d'Aaron Lerch . car je crois qu’il a effectué quelques travaux précoces sur Comet dans ASP.NET.

Autres conseils

WebSync est un serveur Comet évolutif et conforme aux normes, qui s'intègre directement au pipeline IIS / .NET. Il est également disponible à la 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 ont montré qu’il pouvait atteindre 50 000. Le débit des messages est optimal autour de la marque des 1 000 à 5 000 clients simultanés, avec des messages livrés jusqu'à 300 000 par seconde à partir d'un seul nœud.

Il inclut une prise en charge côté client pour JavaScript, .NET / Mono, iOS, Mac OS X, Java, Silverlight, Windows Phone, Windows Runtime et .NET Compact, avec une prise en charge côté serveur pour .NET / Mono et PHP. .

La mise en cluster est prise en charge avec SQL Server ou Azure Caching, mais des fournisseurs personnalisés peuvent être écrits pour à peu près tout (Redis, NCache).

Avertissement: je travaille pour la société qui développe ce produit.

J'ai récemment écrit un exemple simple d'un serveur de discussion à longue interrogation utilisant les contrôleurs asynchrones MVC 3 basés sur un excellent article de Clay Lenhart

Vous pouvez utiliser le exemple d'un déploiement AppHarbor que j'ai configuré en fonction de la source du projet BitBucket.

De plus, de plus amples informations sont disponibles sur mon article décrivant le projet. .

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. Il a sauvé l'un des projets de mon entreprise.

Vous pouvez également consulter le Kaazing Enterprise Gateway qui a généré une production. publication de leur passerelle webSocket [HTML5] qui remplace complètement la méthode comète et permet des connexions en duplex intégral entre les navigateurs et les utilisateurs; serveurs d'applications.

Vous pouvez également consulter les démonstrations de Light Streamer

.

Il y a longtemps, j’utilisais autrefois un site de discussion en ligne qui utilisait un serveur de streaming http personnalisé. En fait, j'ai reproduit ce logiciel à un moment donné par simple curiosité, et c'est assez facile à faire, je pense. Je n'essaierai jamais de mettre en œuvre un type de "requête infinie" similaire. dans IIS, en particulier dans ASP.NET, car les requêtes bloquent 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 qu'un maximum par serveur, selon la configuration de votre pool de threads.

Si j’avais un besoin légitime légitime de telles fonctionnalités, j’écrirais honnêtement un serveur http personnalisé.

Je sais que cela ne répond pas vraiment à votre question, mais je pensais que l'entrée pourrait être pertinente.

Le groupe WS-I a publié un élément appelé " Profil sécurisé fiable " ; qui a un poisson en verre et une implémentation .NET cela apparemment interopère bien .

Avec un peu de chance, il existe un Javascript mise en œuvre également.

Il existe également une implémentation Silverlight qui utilise Duplex HTTP. Vous pouvez connecter le javascript au Silverlight pour obtenir des rappels lorsqu’un push a lieu.

Il y a également versions commerciales payantes également.

Je pense que l'approche Comet n'est vraiment évolutive que si vous êtes prêt à développer la batterie de serveurs Web horizontalement (en ajoutant davantage de serveurs Web à la combinaison). La façon dont cela fonctionne est de laisser une connexion TCP ouverte par session d'utilisateur, afin que le serveur puisse y insérer de temps en temps des éléments pour informer immédiatement l'utilisateur d'un changement ou d'une activité.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top