.NET 消息服务器 Laharsub 简介

  • Abel Avram
  • 侯伯薇

2010 年 10 月 30 日

话题:.NET语言 & 开发架构

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 上的能力,同时包括扩展到多台计算机上的功能。

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

.NET语言 & 开发架构