Sidebar: RPC Standards
The first standard is the classic RPC, also referred to as ONC (Open Network Connect) RPC or Sun RPC. This standard was first developed by Sun as a basis for their NFS and NIS (formerly known as Yellow Pages) products. These RPCs are very widely used, partly because they were the first to arrive on the scene. The Sun RPC standard has the basic capabilities you need:
You can use the basic datatypes for input and output, and you can aggregate these basic types into structures.
You can communicate with the server by means of a symbolic name, but the link between client system and server system is rather rigid.
It is available on a number of platforms, including non-UNIX ones like VMS and NT.
It has a simple programming interface.
It has rudimentary version control to allow multiple versions of one link to coexist on one server. However, this requires some tricks by the programmer.
The Sun RPC standard also has some drawbacks:
It does not really support the POSIX multithreading standard. This means a server has to finish one request before it can process another one.
Error recovery/restart is minimal.
Machine takeover is awkward, especially from the client side.
Only static datastructures can be exchanged between client and server. This means that only datastructures for which size is known at compile time can be exchanged.
So, although this standard is still widely used, its age is beginning to show.
The second standard, the new kid on the block, is DCE RPC from OSF (Open Software Foundation). It is newer than Sun RPC and is specifically targeted at large environments in which a great number of clients needs to communicate with a number of (possibly) duplicate servers. Due to this approach, a number of drawbacks of Sun RPC are resolved, but some new ones have appeared.
First the advantages:
Better error recovery and restart options.
Use of object or Cell Directory Server enables a dynamic binding between client and server.
Supports POSIX multithreading so a server can process multiple requests at once.
Multiple interface support, so multiple versions of one link can coexist on one server.
Support for dynamically sized datastructures.
The drawbacks of the DCE RPC are:
More difficult programming interface.
Maintenance and support are more difficult because of the extra systems involved.
Really only suited for larger networks.
Both of these standards are available for UNIX and Windows NT (although Microsoft chose to set its own naming standard for the DCE derived version). Furthermore, for both of these standards (SunRPC and DCE RPC), the source code of the code generator and libraries is freely available.
|