2010-07-31 28 views
3

Je voudrais implémenter un mécanisme qui fournira une API RESTful qui permette à un client d'enregistrer un intérêt pour un sujet avec un serveur, et de recevoir des notifications asynchrones du serveur après l'enregistrement de l'intérêt. Dans l'architecture d'entreprise (messagerie), cela s'appelle «modèle» publish/subscribe.Une solution évolutive pour la poussée côté serveur?

Avec les applications de bureau, cela est facilement réalisable - cependant avec les applications Web, il s'avère plus difficile.

Existe-t-il un framework ou une bibliothèque (de préférence open source) permettant d'appliquer le modèle de publication/abonnement aux applications Web? La technologie côté serveur peut être dans l'une des langues suivantes: C, C++, PHP, Python, Ruby.

Je fonctionne sur Linux Ubuntu 10.0.4

Répondre

2

Si vous savez à l'avance que vous » Il y aura beaucoup d'abonnés (personnes/applications) qui veulent des notifications sur un certain sujet alors que d'un autre côté, vous aurez peu de sujets différents à considérer une technologie de traction de toute façon.

RSS, Atom sont assez réussis même s'ils utilisent pull. La raison: pas besoin d'avoir une administration sur le serveur des personnes qui sont abonnées, de détecter qui n'est plus intéressé (client hors ligne depuis longtemps) ou d'avoir un mécanisme pour faire sortir toutes les données aux abonnés. En utilisant push, vous devez faire très peu sur le serveur, alors que les clients ne tirent qu'une petite quantité de données à chaque fois.

Tirer coûte un peu plus de bande passante, ce qui est bon marché de toute façon, tout en vous faisant économiser beaucoup sur l'entretien du processeur et du logiciel, ce qui est assez cher.

0

Je vous suggère de jeter un oeil au protocole STOMP, et ses clients python (j'utilise stomp.py). Cela devrait convenir à tous vos besoins.

+0

Hmm, seul problème est que les clients que je pense (navigateurs web), ne peuvent pas exécuter python AFAIK (au moins PAS sans un plugin - qui est un autre ensemble de poisson). – morpheous

+0

Les navigateurs n'ont pas besoin d'exécuter python, ils peuvent par exemple exécuter un client STOMP javascript (à condition que les navigateurs acceptent les sockets web). Idem pour le serveur (il peut être implémenté dans n'importe quelle autre langue). STOMP est juste une spécification. Les clients STOMP javascript sont intéressants. Voici une page intéressante à ce sujet: http://www.kaazing.org/confluence/display/Doc/JavaScript+STOMP+Client+How-To – marbdq