Laharsub is an open source messaging server designed for real time communication in web applications. Laharsub supports a publish/subscribe message exchange pattern many modern, real time web applications use. Online chat and collaboration, multiplayer online gaming, news or stock quote updates, and many more types of web applications created today require real time data transfer from the server to the web client, and between web clients. Laharsub server is implemented in .NET and ships with support for several client technologies: jQuery, Silverlight, and .NET. The protocol is based on HTTP long polling and exposed through a set of REST APIs. Laharsub server can be used from any environment that supports HTTP, including JavaScript running in a web browser. Laharsub enables adding support for a variety of backend technologies to support scale out to a large number of concurrent users. The memory based backend implementation included in Laharsub does not support scale-out but offers high performance in small deployments (several thousand users).

The growing trend of application development targeting web clients and open standards based on HTML and JavaScript generates demand for ever richer experiences for the web platform. Many modern web applications require more than the traditional request/response communication pattern enabled by Ajax technologies. Browser based chat or casual multiplayer internet games must exchange messages between several users in real time. News or financial web applications must deliver news headlines or stock quote updates to a large number of users almost instantaneously. Communication patterns in these applications often follow a publish/subscribe model, with topics that multiple clients can publish to, subscribe to, and receive notifications from. A topic may represent a chat room, an ongoing game, or a particular stock ticker. Messages published to a topic may represent a chat message, a game move, or an update in the stock price, and may originate from users of a client application or from a backend system that delivers fresh data to the application. Subscriptions to a topic enable client applications to receive almost instantaneous, asynchronous notifications whenever a new message is published to a topic. These may be chat messages from other participants of a chat, game moves made by an opponent, or updated stock quotes.

Laharsub supports messaging needs of modern web applications with a design specifically targeting the publish\subscribe model, and a choice of protocols and technologies optimized for the web platform. Laharsub has the three-tier architecture: clients publish or subscribe messages from a middle tier web service that implements the web friendly protocol and delegates the core publish\subscribe functionality and message storage to a backend. The publish\subscribe model is exposed as a set of REST APIs using a protocol based on HTTP long polling (WebSockets will be supported in the future). The protocol allows multiplexing subscriptions to several topics on a single HTTP long poll request, therefore reducing the use of connections that are subject to a quota in a browser environment. For example, a JavaScript application running in a web browser can subscribe to stock quote updates for several stock symbols using a single TCP connection at a time. Laharsub currently ships with clients for three platforms: jQuery, Silverlight, and .NET. However, given the choice of HTTP as the core protocol, any platform capable of making HTTP requests can act as a client of Laharsub. The middle tier Laharsub server is implemented in .NET Framework and can be deployed as a Windows Service or as a console application, on premise or in the cloud.

One of the design goals of Laharsub is scalability to a large number of concurrent users. The middle tier web service architecture is extensible and allows configuration of a custom backend that provides publish\subscribe functionality, message storage, and scale-out to multiple nodes in a web farm. The Laharsub middle tier service itself is stateless and as such scales out well. Laharsub includes a memory based backend implementation that does not scale out beyond a single node, but offers high performance in deployments up to several thousand users.

Laharsub is an active open source project that continuously adds new capabilities and improves existing ones. Web orientation, scalability, performance, and flexibility, are the key principles driving new development. Current areas of investigation include facilitating deployment in Windows Azure, investigating backend technologies to support scale out, security, and support for WebSockets. However, the priorities are often adjusted as a result of community collaboration, so check out for the latest developments.

You can download the latest stable release and start using it. Alternatively, enlist to the source code or just browse it on codeplex. The documentation section has more in-depth information about current status, goals, requirements, architecture, and design. Please use the discussions section to express you opinion about the current open issues or start your own thread. Use the issue tracker to file bugs or feature ideas.

Last edited Oct 23, 2010 at 4:04 AM by tjanczuk, version 1


No comments yet.