Component communication style

The manner in which components interact (as client and server, or sender and receiver), which can be direct or via intermediaries. There are three broad categories:

·         Point to point

·         Introduction agent

·         Mediator.

Point-to-point communication

A sender (or client) is coupled to a receiver (or server). More precisely defined by two features:

1) The sender is responsible for knowing or determining both the location of the receiver, and a protocol and data format the receiver understands.

2) A message is sent by one sender and received by one receiver.

Strength: simple to implement. Weaknesses: potential duplication of data transformation and routing code, high configuration cost of receiver address changes.

Point-to-point middleware

A technology that enables a programmer to write distributed software, in which client/sender and server/receiver modules run on different computers.

The theory is to make a remote invocation appear to a programmer as though it is a local invocation of a process within the same name space on the same computer. In practice, remote invocation is more complex.

The server module is slower to respond, less certainly available, less reliable and distribution raises security concerns. On the other hand, the server is more scalable, since it can be scaled out to parallel servers.

Technologies that can be used to enable point-to-point communication (as well as other kinds of communication) include:

Remote Procedure Call (RPC)

A technology that enables a client to find an automated service on a remote machine, and invoke a named procedure in this different name space. The client sends a fixed set of parameters and waits for the answer to be returned in message using the same interface.

(E.g. XML-RPC uses XML to encode its calls and HTTP as a transport mechanism.) RPC can be used to implement both SOA and DO interoperation styles. In DO, since it invokes a procedure as an object-method pair, it is often called Remote Method Invocation. (And RMI is the name of Java's Java Remote Method Invocation API.)

Web services

A technology that enables a client to find an automated service and invoke it using the SOAP protocol to exchange XML-based messages.

Usually over a network. Usually via HTTP/HTTPS - but also SMTP.

Web services can be stateless or stateful, and invoked synchronously of asynchronously. So though they are commonly associated with SOA, they can also be used to implement a Distributed Object style of interoperation.

Introduction agent (direct broker) communication

An indirect broker helps parties to communicate. It decouples clients and servers, at least to the extent that the two parties can work in different places. It hides some complexities of the communication transport.

The broker must register parties willing to communicate (end point registration). The broker can then establish initial connection when a client requests a service from a server. Subsequently, the parties communicate point-to-point via client-side and server-side proxies, which is faster than via a mediator broker.

Introduction agent (direct broker) middleware

Technologies that can be used to implement the introduction agent kind of distribution. They add overheads on top of RPC.

Object Request Broker (ORB)

A technology that enables the objects in an object-oriented program to be distributed between computers. A technology programmers need to get one distributed object to call an operation on another.

E.g. Microsoft ORBs include DCOM and .Net remoting.

Common Object Request Broker Architecture (CORBA)

Standards for an object request broker to comply with, defined by the OMG. It uses CORBA IDL and IIOP.

Internet Inter-ORB Protocol (IIOP)

A standard for technologies used to send objects (rather than messages) over TCP/IP.

Web service broker

A technology that uses Universal Description Discovery and Integration (UDDI) as the API for registration and location of web services. It offers a SOAP-based web service for finding and registering web services.

Mediator communication

An indirect broker helps parties to communicate. It decouples clients and servers by sitting between them. It means the parties can work at different places and times (asynchronously). It can shield one party from some effects of some changes to the other.

It does for components what email infrastructure does for people, that is, enable them to communicate asynchronously via messages - rather than talk directly over an end-to-end network connection kept open for that conversation.

Shared memory architectures

Any shared memory space can act as a mediator, since communicating parties can post messages to the shared memory and read messages from it – as in the blackboard pattern.

Message broker (indirect broker) distribution

A message broker is a mediator that forwards communications. It:

·         provides a shared infrastructure for sending messages to recipients.

·         hides some complexities of the communication transport.

·         offers common command messages.

·         enables end point registration: the broker registers parties willing to communicate.

·         enables routing: the broker locates parties and sends them messages

·         enables transformation: the broker converts data formats.

Message Router Distribution

The message broker sends a message where the sender directs. The client communicates the logical name of the server to the broker. The broker looks up the server that is registered under the logical name and passes the communication to the server.

Schema-based Distribution

The message broker uses a common data format to reduce the cost of adding and removing communicating parties. It provides a common data model, a set of agreed-upon message schemas.

Message broker (indirect broker) middleware

A Message-Oriented Middleware (MOM) technology that sits between communicating components; it stores and forwards messages according to the required styles of interoperation and communication.

MOM technologies may be used to implement any communication style. They may use RPC or P2P technology under the covers.

Message Queuing technology (MQ)

A message broker that stores and forwards messages. It smooths demand for server operations, since the server works at its own pace, but can reduce client response time.