22C:118 Fall 2004 Week 12 Summary 22C:118 Fall 2004 Week 12 Summary


  1. Monday was the second examination.
  2. Wednesday's lecture examined the paradigm of Client-Server in more detail, by introducing the RPC abstraction (RMI is the same idea). Several non-trivial aspects of Remote Procedure Call include security, fault tolerance, heterogenous systems, and how to hide networking aspects so that applications programmers don't need to program all the details.
    Important distinctions for RPC are whether a specific Call (or Method) would be stateless or stateful, since the latter implies some session context, added overhead, and perhaps cookies or some other multiplexing technique. Methods can also be idempotent or non-idempotent, and the possiblity of nested RPC is a further complication, particularly for fault tolerance. In class it was shown why UDP can be preferred over TCP for some types of RPC.
  3. Friday first reviewed the exam given on Monday. Then, continuing on with RPC, the lecture presented an overview of how the process of implementing RPC in a general way can be automated. Concepts such as brokers (Object Brokers are used in CORBA) or directory services can help locate servers; the semantics and types of arguments of Remote Call/Method are documented using an Interface Definition Language; to change a local call to a remote call, the method or routine is replaced by a stub, which manages networking, does marshaling and demarshaling of parameters, and data conversion to solve the heterogeneity problem. IDL specs for a method are input to a compiler that produces client and server stubs, header files or include files for the application programs, and possibly also the input needed for a directory service. All that an application programmer needs to do is write the application and describe methods using the IDL, and the rest (one hopes) is automatic.