Laharsub是一种开源的.NET发布-订阅消息服务器,用于实时的web应用程序,像聊天、在线写作、新闻或者股票交易更新等等。

Laharsub是一种构建在三层架构之上的发布-订阅消息服务器: 前端——客户端,中间层——web服务,后端——带有发布-订阅功能和存储能力的系统。 客户端一般是浏览器,但是可以是所有已知能够做出HTTP请求的程序。 中间层是一种WCF的HTTP服务,它会从客户端接收消息,并向其发送消息,而后端会包含真正的与消息相关的逻辑。

客户端可以创建主题,并通过RESTful 的API向它们提交消息,而其它客户端会通过HTTP的长轮询机制(long polling)来订阅多种主题。 客户端使用一个请求就可以订阅多个主题。 Laharsub提供了jQuery、Silverlight和.NET 4.0的客户端,负责设计结构、多路传递以及长轮询的管理。 据项目的协作者Tomasz Janczuk所说,Laharsub在将来会使用WebSockets。

据Janczuk所说,由于web服务没有状态,因此可以很好地伸缩。 Laharsub具有能够在内存中扩展到上千用户的后端,但是仅限于单独的节点。 对更好的可伸缩性感兴趣的人提出了这样的建议,“提供发布-订阅功能的自定义后端,消息存储,并扩展到web farm的多个节点中”。 web服务会以Windows service或者控制台应用程序的形式运行。

订阅主题的示例如下:

GET http://laharsrv/ps/sql/subscriptions/volatile?subs[0][topicid]=14&subs[0][from]=1 HTTP/1.1Host: laharsrv

响应会是这样的:

HTTP/1.1 200 OKContent-Length: 406Content-Type: multipart/mixed; boundary=1d69db84.154e.47f7.be93.cc8b65b6efd0Server: Microsoft-HTTPAPI/2.0Date: Tue, 18 May 2010 23:14:24 GMT--1d69db84.154e.47f7.be93.cc8b65b6efd0Content-Type: text/plain; charset=UTF-8Content-Description: 14/929Hello, world!

该项目位于CodePlex中,遵从新的BSD许可(BSD)。 在这里发布了一个页面,其中描述了在服务器上应用的压力测试和性能结果。 对未来的计划包括将服务器部署到Windows Azure和Amazon EC2上的能力,同时包括扩展到多台计算机上的功能。

查看英文原文:Laharsub, a .NET Messaging Server

posted on 2010-11-02 22:11  爱编程的大叔  阅读(886)  评论(0编辑  收藏  举报