Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Chapter 9 – RPCs, Messaging & EAI Message-Oriented Middleware (MOM) and RPCs based middleware tend to be traditional, point-to-point middleware. Because of that, they are not effective solutions for most EAI projects. Middleware itself is a common point of integration for source and target systems. Despite the limitations of this technology for EAI solutions, the appropriate tradeoffs in both technology and product decisions may make the inclusion of this middleware important to a particular EAI problem domain. RPCs RPCs are a method of communicating with a remote computer, in which the developer invokes a procedure on the server by making a simple function call on the client (see Fig. 9.1) Fig. 9.1 Using RPCs The client process that calls the function must suspend itself until the procedure is completed. This blocking of an application might become a problem for the performance of that application. Also there is a high level of network communication between the client and the server when using RPCs, thus the RPC architecture requires a highspeed network. RPCs were the base middleware layers of the early client/server systems. In addition to many database-oriented middleware layers, they are capable of running network operating systems, such as Sun’s NFS (Network File System) and DCE (from Open Software Foundation) Distributed object technology, such as COM and CORBA, leverage RPCs effectively in order to provide object-toobject communications. DCE DCE is complex (but effective) middleware solution. It was developed by OSF and it makes many diverse computers function as a single virtual system – excellent for distributed computing. Fig. 9.2 The DCE Architecture Because the heart of DCE is a classic RPC mechanism, every limitation inherent in RPCs - including blocking and the need for a high speed network – also exist in DCE. But, DCE allows developers to reach across platforms to access many types of application services, including database, distributed objects, and TP monitors. DCE also provides a sophisticated naming service, a synchronization service, a distributed file system, and builtin network security. Another plus is that DCE is available on almost any platform. MOMs If the required bandwidth is not available for use with an RPC middleware, or in the situation where a server cannot be depended upon to always be up and running, messageoriented middleware (MOM) is more advisable than any other type of middleware. Fig. 9.3 Using MOMs Like RPCs, MOM provides a standard API across hardware, operating system platforms and networks. It is also able to guarantee that messages will reach their destination, even when the destination is not available (meaning the server is not on line, the application is not started, application crushed, etc) MOM utilizes one of the two macro-messaging models 1. Process-to-Process both the sending and receiving processes must be active for messages to be exchanged 2. Message Queuing allows messages to be stored in a queue, so only one process needs to be active (the sender process). This method is the most beneficial when communication is taking place between computers that are not always up and running, over networks that are not always dependable, or when there is a limitation on bandwidth. Unlike RPCs, MOM is asynchronous, thus it doesn’t block the application from processing when the middleware API is invoked. MOM message functions can return immediately even though the request has not actually been completed. This allows the application to continue processing, assured that it will know when the request is completed. The queuing model is the most useful from transactionsoriented EAI applications that must transverse multiple platforms. Unlike DCE, the platform does not have to be up and running for an application to request services. If the server is down the request remains in queue. When the server comes back online, the request will be processed. In addition to these features, MOM provides concurrent execution features, allowing the processing of more than one request at the same time. In conclusion, MOM is a good fit for store-and-forward communications or when dealing with applications that are not expected to be reachable at the same time. MOM is also good for “defensive” communication, or when the network between applications fails a lot. Also it’s a good option for when communications between processes need to be logged. MOM and messaging tend to be better EAI fits than RPC based middleware, but MOM alone does not provide all the infrastructure necessary for EAI. Message Brokers add value to traditional MOM products by providing data and schema transformation function, as well as intelligent routing and event-driven processing to move information on an enterprise network. (see Fig. 9.4) Fig. 9.4 Message Brokers using MOM Microsoft Message Queue (MSMQ) It’s a Windows NT/2000 based and COM enabled MOM. It is also a key product for Microsoft as it joints the Microsoft Transaction Server (MTS), Internet Information Server (IIS), SQL Server, and Microsoft’s Active Platform. MSMQ provides a set of Active X components that implements an API to all MSMQ features. Active X allows these other Microsoft products to access MSMQ. MSMQ can guarantee the delivery of messages by utilizing disk based intermediary storage and log-based recovery techniques. Some of the protocols MSMQ works well with are IPX/SPX and TCP/IP. Using MSMQ as a common translation mechanism these protocols can even be mixed and matched. MSMQ is tightly integrated with MTS and MTS services participate in the MSMQ transaction. Some of the MSMQ features are: 1. On time, in order delivery of messages from source to destination 2. Message-routing services, which give the EAI applications the ability to send messages to their destination using least-cost routing 3. Notification services, which informs the sender that the message was received and processed. 4. Message priorities, which allow developers to assign priorities to messages. 5. Journaling, which maintains copies of the messages moving in the system. Using MSMQ When an application needs to place a message in the queue, it uses the MSMQ Open API, which has an Active X control wrapped around it. By passing in, the name and destination queue, a queue handle is created, allowing the MSMQ to identify the destination queues to the MSMQ server sending the message. Once a queue handle has been created, the next step is to create a message by allocating local memory and adding information to the message. At this step, parameters (timeout values, names of response queues, priorities, etc) can be added. The message is then sent through the MSMQ “Send API”. Finally the application closes the queue handle using the MSMQ “Close API” function (MQCloseQueue). The receiver application requires the Open API, along with queue identification information, to create the queue handle. When calling the MSMQ Receiver API, MSMQ will pass back a pointer with control information to the message. After receiving the information, the application will close the connection to the queue. Fig. 9.5 The Architecture of MSMQ IBM MQSeries IBM has over 65% of the middleware market and although is not the best of the message middleware software, the IBMs MQSeries is at the top of the EAI world as the preferred messaging layer for moving information through an enterprise network. MQSeries support a variety of platforms working with IBM OS/390, Pyramid, Open VMS, IBM AIX, NCR UNIX, Solaris, Windows NT, MacOS, etc. MQseries supports all the features of MSMQ, including support for transactions, journaling, message routing and priorities. It also provides a common API for use across a variety of development environments and on a variety of platforms. The interesting thing is that MQSeries provides a single multiplatform API, so messages can be sent from a Windows 2000 computer and routed via UNIX, VMS, etc, before reaching their final destination. MQSeries can also be used as a transactional recovery method and a mail transport mechanism, assuring the delivery of the message. Fig. 9.6 MQSeries MOM MQSeries supports what IBM calls “advanced message framework”, a framework that consists of 3 layers: 1. Customer Application Options 2. Trusted Messaging Backbone 3. Comprehensive Communications Choices Fig. 9.7 The 3 Layers of MQSeries 1. Customer Application Options provide services such as basic messaging, transactional messaging, workflow computing, mail messaging, option messaging, cooperative processing, data replication and mobile messaging. 2. Trusted Messaging Backbone guarantees that messages are delivered to their destinations and that the information encapsulated in those messages is secure. 3. Comprehensive Communications Choices allow MQSeries to leverage any number of protocols and networks for message traffic. MQSeries Features - Database-message resource coordination (DMRC) - Smart message distribution - Supports NT/2000 & OS/2 - SQL support - Ability to support large message