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.1 Host: laharsrv
响应会是这样的:
HTTP/1.1 200 OK Content-Length: 406 Content-Type: multipart/mixed; boundary=1d69db84.154e.47f7.be93.cc8b65b6efd0 Server: Microsoft-HTTPAPI/2.0 Date: Tue, 18 May 2010 23:14:24 GMT --1d69db84.154e.47f7.be93.cc8b65b6efd0 Content-Type: text/plain; charset=UTF-8 Content-Description: 14/929 Hello, world!
该项目位于 CodePlex 中,遵从新的BSD 许可(BSD)。 在这里发布了一个页面,其中描述了在服务器上应用的压力测试和性能结果。 对未来的计划包括将服务器部署到Windows Azure 和Amazon EC2 上的能力,同时包括扩展到多台计算机上的功能。
评论