In virtually every industry, organizations are seeing an increasing need to enable their applications for network-based computing. The majority of the electronic application development solutions on the market today deal with the development of synchronous, real-time applications. However, in many organizations, there is also a significant need to build asynchronous, loosely coupled applications and reliable network communications services that will function properly over unreliable but cost-effective networks. A solution to this need is message queuing services. Features to look for in a network operating system message queuing implementation include:
Integration with the network operating system’s distributed component model.
Simple application programming interfaces (APIs).
One time, in-order message delivery.
Transaction support with rollback.
Solaris 7 Implementation Details
Solaris 7 provides no message queuing services of any kind. Third-party solutions, such as the IBM MQSeries message queuing services, are supported.
Windows NT Server 4.0 and Windows 2000 Server Implementation Details
The Microsoft Message Queue Server (MSMQ) is integrated into the operating system in Windows 2000 Server and available as an add-on with the Windows NT 4.0 Option pack on Windows NT Server 4.0. MSMQ provides a complete, operating system integrated message queuing services implementation on the Windows platform. The core principles of MSMQ can be summarized as follows:
All message queuing features and functions operate independently of network protocols. Any application that knows the name of another application’s request queue can send requests and receive responses regardless of network type.
Message queuing greatly reduces synchronization requirements between applications because message queue contents are easy to translate, and message-based interfaces hide the differences between application architectures and database technologies.
To ensure reliability, message queuing sends data in a way that prevents message loss. In addition, the transactional delivery capabilities in message queuing make it easy to preserve data integrity within sending and receiving applications.
Through third-party solutions such as FalconMQ from Level 8 Systems, message queuing on the Windows platform can transparently access queues on legacy platforms managed by IBM Corporation’s MQSeries product without requiring additional programming. When using message queuing to communicate to mainframe-based applications, as opposed to tightly coupled connections, the mainframe retains control over the order of request processing and database locking to optimize availability and performance.
Key features of the MSMQ implementation on the Windows platform can also be summarized as follows:
Full COM Component Support has been provided with a set of integrated COM components that implement a convenient and full-featured application-programming interface to MSMQ features. COM support makes it easy to access MSMQ from a wide variety of popular programming languages such as Microsoft Visual Basic, Visual C++®, Visual J++®, and Microfocus COBOL as well as from Internet Information Server (IIS). This makes MSMQ one of the easiest to use and most accessible message queuing solutions available.
Simple Application Programming Interfaces are provided to make development easier. The majority of MSMQ programming is accomplished through five simple APIs (open, close, send, receive, and locate). MSMQ delivers its advanced message queuing benefits without complex network-level programming.
Reliable, Resilient Message Deliveryis accomplished through sophisticated techniques such as sliding window protocols, recoverable storage, and dynamic routing to deliver messages. This allows developers to focus on business logic and not on sophisticated communications programming.
One Time, In-Order Message Delivery is guaranteed with MSMQ, ensuring that all messages are delivered exactly one-time and in the order that they were sent. This prevents many different kinds of problems that can occur within receiving applications such as duplicated orders and overdrawn accounts or inventories.
Transaction Support is provided with full integration with Microsoft Transaction Server/COM+ and the Microsoft Distributed Transaction Coordinator (MSDTC). This provides a standards-compliant XA interface, enabling MSMQ operations to commit or abort with other resources in a transaction to preserve data integrity.
Hierarchical, Directory Service-based Architecture has been implemented to manage all MSMQ objects dynamically. This improves scalability because administrative operations such as adding machines or moving queues can be performed centrally and do not require making changes to individual machine configurations. In addition, applications on any machine within an MSMQ enterprise can send messages to an application on any other machine with no pre-configuring of channels or routes. This dramatically improves scalability by eliminating management tasks that increase exponentially with the total number of connected machines. On the Windows 2000 Server platform, MSMQ is fully integrated with the Active Directory. All objects in an MSMQ enterprise can be managed as part of the directory just as if they were a standard directory object such as a user or group,. This greatly improves reliability and eases management-related tasks for the administrator.
Message Routing Services are provided to deliver messages using the lowest-cost route that is currently available. When networks fail, MSMQ automatically uses the next-lowest-cost route to deliver messages. Administrators specify costs using the MSMQ Explorer. Routing support eliminates single points of failure and provides software-based fault-tolerance and high-availability.
Clustering Service Support is fully provided with MSMQ. Clustering enables administrators using Microsoft Cluster Server on Windows NT 4.0 or Clustering Services on Windows 2000 to configure MSMQ services for automatic failover and fault-tolerant, high-availability applications.
MAPI/Microsoft Exchange Integration allows MAPI transport provider services to use MSMQ as a communications medium. The MSMQ Exchange Connector enables MSMQ to send, receive, and transport Exchange messages and forms, making it easy for developers to add MAPI- and Exchange-based interfaces to MSMQ applications.
Security Integration with the Windows NT and Windows 2000 Access Control List (ACL) mechanism. ACLs enable administrators to control precisely which users can perform read, write, and administration actions on a queue-by-queue basis.
Integrated Encryption, Integrity, and Signature support has also been included with MSMQ. Message queuing applications can use the Microsoft Crypto API to automatically encrypt, protect, and sign messages. This protects messages from being viewed or changed during transmission (even over non-secure networks such as the Internet) and ensures that servers do not receive messages from unauthorized senders.
Security Log Integration allows administrators to specify which MSMQ events (such as opening or closing a queue) should create an audit record in the Windows NT or Windows 2000 Security Log. This support allows organizations to track the changes and events that affect their mission-critical applications.
Message Queuing Services Summary
For customers seeking to deploy message-queuing applications within their enterprises, Windows 2000 Server and Windows NT Server 4.0 are the only choices of the three operating systems evaluated. Both of the Microsoft solutions easily address all of the review criteria and provide many enhanced features and operating system integration benefits, making them both excellent solutions on which to deploy asynchronous applications. Of the two, Windows 2000 Server is the best choice because of the integration of MSMQ with Active Directory. With an integrated directory service that can track MSMQ objects, Windows 2000 provides the superior choice.