Flexible messaging
KnowNow Event Router relieves cross-platform application integration woes
CHIEF AMONG THE challenges facing enterprise developers is a task most people assume was mastered long ago: messaging. Not messaging in the sense of e-mail or other person-to-person collaboration but messaging between applications. Shipping arbitrary data from one program to another across a network, through firewalls and filters, and over platform and programming language boundaries is no easy feat. Message-oriented middleware from vendors such as IBM, Tibco, and Progress Software can tie applications together but can carry high development and deployment costs and require a lot of skill to use and manage.
Following a welcome trend toward simpler solutions to complex problems, KnowNow offers an HTTP-based messaging subsystem that runs across platforms (Solaris and Windows) and works easily with multiple programming languages. KnowNow’s publish-and-subscribe approach and multilanguage APIs free programmers from having to understand the intricacies of network protocols. After our testing, we were impressed with the simplicity of KnowNow’s design. We would like to see broader platform coverage, better administrative tools, and more formal documentation, but we think KnowNow’s comprehensible, adaptable, and scalable architecture deserves consideration for integration projects.
We evaluated Version 1.5 of KnowNow Event Router on a pair of Windows 2000 Advanced Server machines — one equipped with an AMD Athlon XP 1900+ CPU and 512MB of RAM and the other with dual 2.2GHz Intel Xeon CPUs and 1GB of RAM. We used Version 1.2 of Sun’s Java SDK (software developer’s kit) and Visual Studio .Net to create our test applications.
Jumping hurdles
In the publish-and-subscribe messaging model, a subscriber is an application that asks to be notified whenever new data is presented on a particular named channel (or topic, in messaging parlance). The publishing application delivers information to subscribers by inserting data into the appropriate topic. On publication, KnowNow’s Event Router uses HTTP to deliver topic data, called events, in real time to all of the subscribers registered for that topic.
As simple as this model is to describe, it is fraught with technical obstacles. For one thing, it’s tough to provide scalability and availability under the publish-and-subscribe model because each topic is usually hosted by a single server. For another, every programming language has its own notion of how events are defined and processed. And finally, events can be lost if a server is unavailable at the time the data is published.
KnowNow tackles these problems with ingenuity. Servers may be clustered for load balancing and fault tolerance, and any server may subscribe to topics hosted on other servers. By allowing Event Routers to subscribe to other topics, KnowNow enables topic hierarchies and transparent routing of events between servers. We especially appreciated the ability to aggregate data from multiple topics under a single new topic.
The KnowNow Event Router is further insulated from failure by constantly maintaining its operating state in a persistence database on disk. We intentionally terminated the router several times and found that no published message failed to be delivered after the server was restarted. Because it uses HTTP as a transport, KnowNow’s Event Router requires no special client software. To smooth out differences between languages and to add an extra measure of reliability, however, KnowNow supplies messaging clients that it calls Microservers. The Microservers also queue messages locally when a server is unavailable.
Microservers
The primary client interface to KnowNow is JavaScript. The programmer accesses KnowNow topics and events using native JavaScript objects and an extremely simple API. Navigating to a KnowNow-equipped Web page automatically loads the necessary objects directly from the KnowNow Event Router.
The Java Microserver API is as easy to use as JavaScript, but it has the added capability of subscribing to topics on multiple servers. Published events on subscribed topics trigger callback functions. When running on a BEA Weblogic or IBM WebSphere J2EE (Java 2 Enterprise Edition) server, KnowNow’s Java Microserver can present an API subset compatible with Sun’s JMS (Java Message Service) specification.
KnowNow supplies C/C++ Microservers for Solaris and Windows, along with an ActiveX API that gives Visual Basic and Windows Scripting developers access to KnowNow messaging. A Python Microserver is also available. In the latest release, KnowNow has added APIs for modular filters and transforms. These custom modules, written in C/C++ and dynamically loaded into the Event Router, make it possible to change or block messages programmatically. KnowNow has also created a facility for plug-in authorization and authentication, partially addressing a shortcoming of previous releases that relied solely on text files for security data.
Not perfect
We observed a few holes in KnowNow’s implementation. Supplied administrative tools, all browser-based, manage one Event Router server at a time. In the clustered or distributed setting likely to prevail in enterprise deployments, administrators need to be able to view and change the operational status of groups of servers. There is also no facility for monitoring the health of Event Routers and alerting administrators (or taking other action) when they’re in trouble.
The KnowNow documentation is reasonably well-written but is delivered as a handful of huge HTML files. Although the documents are useful as guides and introductions to KnowNow technology, they are inadequate as developer and administrator references.
Near press time, KnowNow began touting the Web services capabilities of its router (see “Gambling with trust,” below). Some new KnowNow marketing literature refers to the KnowNow Event Router as the Web Services Router, a moniker that’s a bit ahead of reality. The KnowNow Event Router uses HTTP as a transport, and events can contain SOAP (Simple Object Access Protocol) data, or any other kind of data, for that matter. Otherwise, the software, documentation, and code samples we evaluated had no special provisions for SOAP, WSDL (Web Services Description Language), or UDDI (Universal Description, Discovery, and Integration). KnowNow intends to add Web services features to its software in the coming months. Even so, KnowNow’s literature takes pains to point out that future Web services capabilities will not supplant KnowNow’s core architecture.
As with all solutions of its kind, KnowNow’s integration platform is not perfect. Even so, we concluded that KnowNow’s software is an efficient and elegant alternative to large, costly, and complex middleware systems.