Other Distributed Computing Models
How does CORBA fit other distributed computing models?
Sockets programming
Programming with sockets is a much lower level activity than CORBA development.
A socket basically consists of two endpoints, usually two computers connected across a network. Those that have done it will tell you that it has a steep learning curve, requires working at the data buffer level, and can be difficult to debug and optimize.
Remote Procedure Calls (RPC)
RPCs were a result of the software industry realizing how valuable sockets programming could be, while desiring the ability to build distributed applications at a higher level.
RPCs solidified the concepts of client and server by allowing a client to request services and have them provided across a network. The key to the model is that Remote code in a Procedure at the server is run as a result of a Call by the client. RPCs allowed developers to make use of sockets at a higher, more intuitive level. CORBA borrows heavily from the RPC model, but strives to make the entire process as open as possible.
Data Access Libraries and Client/Server Development Tools
In addition to sockets and RPCs, many database vendors and third party tools vendors have created development tools that allow database access and other forms of distributed computing.
The primary weakness in these tools is that they only interoperate with tools from the same vendor and tend to make it very hard to allow distributed applications to keep up with changing business processes.
This problem does not exist in CORBA-based systems.
RPC
In distributed computing a (RPC) remote procedure call is defined as a computer program that causes a procedure to execute in another address space (commonly on another computer on a shared network),
which is coded as if it were a local procedure call, without the programmer explicitly coding the details for the remote interaction.
The programmer writes essentially the same code whether the subroutine is local to the executing program, or remote.
This is a form of client-server interaction (caller is client, executer is server), typically implemented via a request-response message-passing system.
The object-oriented programming analog is remote method invocation (RMI). The RPC model implies a level of location transparency, namely that calling procedures is largely the same whether it is local or remote,
but usually they are not identical, so local calls can be distinguished from remote calls.
Remote calls are usually orders of magnitude slower and less reliable than local calls, so distinguishing them is important. RPCs are a form of inter-process communication (IPC), in that different processes have different address spaces:
if on the same host machine, they have distinct virtual address spaces, even though the physical address space is the same; while if they are on different hosts, the physical address space is different.
Many different (often incompatible) technologies have been used to implement the concept.