General Inter-ORB Protocol

From Wikipedia, the free encyclopedia

In distributed computing, General Inter-ORB Protocol (GIOP) is the abstract protocol by which object request brokers (ORBs) communicate. Standards associated with the protocol are maintained by the Object Management Group (OMG).

IIOP (Internet Inter-Orb Protocol) is the implementation of GIOP for TCP/IP. It is a concrete realization of the abstract GIOP definitions.

Contents

[edit] Message types

The Object Management Group defines three parts of GIOP:

  • The Common Data Representation (CDR) - transfer syntax mapping OMG IDL data types into a low-level representation for “on-the-wire” transfer between ORBs and Inter-ORB bridges.
  • The Interoperable Object Reference (IOR) - define the format of a reference to a remote object. An IOR consists of tagged profiles and their components that may carry various needed information. The typical IOR usually contains the protocol version, server address and a byte sequence identifying the remote object (object key).
  • The defined message formats - messages are exchanged between agents to facilitate object requests, locate object implementations, and manage communication channels. Messages are:
    • Request is sent to invoke the remote method.
    • Reply is returned in response to Request. It normally contains the data, returned from the remote method. In other cases the reply may contain the redirection instruction or the description of the exception that was thrown on a server side.
    • CancelRequest is used to cancel request that was previously sent (no longer waiting for the answer).
    • LocateRequest is used to verify if the server knows and supports the certain remote object, and (if not), to what address the requests for that object should be sent instead.
    • LocateReply is sent by server in response to the LocateRequest. If needed, it may contain the new address of the remote object that has moved.
    • CloseConnection is sent by server, indicating that it will not provide the future responses.
    • MessageError is sent in response to the malformed or otherwise invalid messages. It is not used to report errors outside the messaging system; such errors are reported using the Reply message.
    • Fragment is a subsequent message, continuing the previous one. The long messages can be split into fragments.

[edit] Binary format

In the binary dumps the GIOP message can be easily recognised by the characteristic header:

  1. Four ASCII characters: G I O P
  2. The two bytes, defining first major (currently only 1) and then minor version numbers.
  3. One byte, defining the message flags. The least significant bit defines the byte order (0 - big endian, 1 - little endian).
  4. One byte, defining the message type (Reply, Request, Fragment and so on).
  5. The four byte word, defining the message size (not counting the message header).

Messages can also carry the arbitrary data fragments, identified by the standard integer tags. These additional data fragments are called service contexts and are used to extend the communication standard when necessary. There are standard service contexts to describe the thrown exception, to specify the charset for representing the national characters and so on. It is possible to register the client and server side interceptors that add the specific service contexts to the messages being sent and also read the specific contexts, added by the similar interceptor on the remote side.

[edit] Legal status of the GIOP abbreviation

CORBA, IIOP and OMG are the registered marks of the Object Management Group and should be used with care. Differently, the GIOP is not the registered OMG trademark (see list of OMG marks). Hence in some cases it may be more appropriate just to say that the application uses or implements the GIOP-based architecture.

[edit] See also

  • DIIOP
  • ESIOP
  • HTIOP
  • XIOP
  • BIOP - Broadcast Inter-ORB Protocol

[edit] External links