books This book provides a technical specification of Apollo Computer Inc's Network Computing Architecture. NCA comprises an RPC facility, an interface definition language (NIDL) and network data representation (NDR) for this RPC, and a location broker (LB) which enables binding of RPC peers. An implementation of NCA in the form of the Network Computing System is also provided by Apollo. The book gives a brief overview of NCA's framework and then gives a detailed specification of the technical aspects of each component. Aimed at programmers, system designers and students wishing to understand NCA technically, perform NCA protocol implementations or use existing NCA implementations, the work requires previous knowledge of RPC mechanisms, communication protocol fundamentals and finite state machine concepts. As no introduction to such problems is given, this is more of a technical reference manual than a tutorial. Except for s o m e brief overview chapters, the text is written in a very detailed, technical style, and can therefore be difficult to understand. Although there are a number of tables few figures are included, which could have helped in understanding technical concepts. The authors start with an overview of NCA, and explain its components' functionality. The imposed object and network models are presented in two unusually short chapters, and although appropriate this could have been placed elsewhere or augmented with general background information. Subsequent chapters pre-
502
Spoilt by lack of illustration sent NCA's RPC packet layout and client/server protocols in detail. However, the state machines of the RPC protocol described are hard to comprehend as they are only given in tables -again, figures would have helped. An additional chapter is concerned with the problem of enforcing atmost-once execution of RPCs within NCA, but more extensive discussion could have been beneficial as the mechanism is quite interesting and useful. The authors then focus on the NIDL used to specify data types and operations used in the context of NCA RPC. NIDL syntax is given formally by an EBNFgrammar, along with an informal description of the semantics of each language construct. It is unfortunate that this presentation is also difficult to understand due to a lack of examples -- it provides important information for a language implementor but precious little help for exist-
ing and potential NIDL users. In summary, the book provides very important technical information on NCA and can be used as a base for NCA implementation. It is not easy to read and is therefore better suited as a reference manual rather than a tutorial. Existing NCA users will gain little from the work because of the lack of examples given. However, this could be used as the base for a practical class on RPC implementations provided that an existing NCA framework and some example programs are made available. Additional illustrations of RPC state machines should also be added. While the price of this book is justified for technical use in a commercial environment, it may well prove to be too steep for students.
Network Computing Architecture by L Zahn et al. Prentice Hall (1989), $30, 209pp
Dr AlexanderSchill University of Karlsruhe, Germany
Well written and worthy text Growing interest in distributed systems has created demand for material capable of unveiling the mysteries of distributed applications programming. This work should help satisfy part of this demand through its detailed coverage of one of the earliest, yet most widely used, technologies supporting distributed applications production: the Remote Procedure Call (RPC). This is a well written book and, although it finely
focuses on RPC technology, it should be of considerable value to professional programmers, systems administrators and students interested in the task of constructing non-trivial distributed applications. The book's scope and organization provide a good overview of, and a useful reference text to, (Sun) RPC technology. RPC technology extends the familiar concept of the procedure call into the distributed environment. Using
The Art of Distributed Applications by ]ohn R Corbin Springer-Verlag (1991), DM79, 321pp
computer communications
books the technology, an application is structured as a number of client and server processes (generally) spread across a number of networked computers. Clients make use of distributed services by making requests, via RPC invocations, to appropriate servers. In pure RPC style, a client execution blocks an RPC invocation and control is transferred to a (usually remote) server. The server executes the requested procedure and finally returns control plus any results back to the client, which is then free to resume execution. The book specifically addresses the definition and use of the Sun RPC protocol, but the description is sufficiently rich to convey the concepts behind, and the programming techniques applicable to, RPC technology in general. Following a gentle overview of the basic concepts of RPC, the text presents chapters which cover the eXternal Data Representation (XDR)library (which, when used in conjunction with the RPC library, can provide applications with a degree of heterogeneity), the RPC library itself, a protocol compiler for RPC-based applications, distributed programming considerations in general, and future directions of RPC programming. Five appendices are provided, the most substantial of which provide further details of the XDR and RPC protocol specifications. The heart of the book lies in Chapters 4-6 which describe the form and use of routines that comprise the high and low level RPC programming interfaces. The high level programming interface is the simpler to use
vol 14 no 8 october 1991
but removes much of the programmer control otherwise obtainable through the low level interface. Most chapters are supplied with a number of useful exercises, the bulk of which require the development of small applications or the enhancement of applications presented in the main text. The text is well written and offers clear explanation of the numerous concepts presented, and the healthy number of well-documented example programs contribute to the text's effective presentation. The smooth flow does occasionally break down, though. This is most notable where synopses of library calls are presented: prose descriptions of functions soon becomes tedious, and they are not helped by the textual redundancy that inevitably creeps in as a result of similar conventions used, and related functions provided, by many of these routines. Occasionally, there is something to be said in favour of the terse Unix manual page! Possible suspicion that this book might amount to a dressed-up reorganization of the Sun OS Network Programming Guide can be dispelled on at least two counts. First, the text covers features of Sun RPC not documented in that guide and, second, its author skillfully dispenses sound advice on RPC programming techniques throughout. This is especially valuable when one considers how difficult it is to extract such insight from technical manuals alone. As the author rightly claims in his concluding chapter ('Future directions of RPC programming'), "Distributed computing is the wave of the future." Therefore, considering that
RPC has been the predominant technology used for distribution application software production for over a decade and, given its relatively low level nature, one might reasonably expect the author to discuss RPC in a slightly wider context. However, this book fails to address adequately newer and higher level distributed programming technologies which have since begun to emerge from the research community. The book's treatment of such advances is found only in the context of Chapter 9's coverage of developments in RPC (which effectively stem from pressure on the part of RPC proponents to move with the times). In that chapter lies the evidence of a current major trend in RPC: that of overloading its basic framework to address various new concerns such as asynchronous message invocation, multicast message transmission and the use of lightweight processes. The rapidly changing nature of RPC technology, coupled with continued advances in distributed systems technology in general, suggest that the book's currency will be subject to steady erosion. In fact, this process is already evident in that the author provides very limited coverage of Sun's transport independent (TI) version of the RPC library (which was being developed in parallel with the book's production). Still, despite the above criticisms, this work is a well written and worthy text which many are likely to benefit from reading. Dr John R Nicol GTE Laboratories, Inc., Waltham, MA, USA
503