Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Network computing architecture
Zahn L., Dineen T., Leach P., Prentice-Hall, Inc., Upper Saddle River, NJ, 1990. Type: Book (9780136116745)
Date Reviewed: Jul 1 1991

The Network Computing Architecture (NCA) was developed at Apollo Computer in the mid-1980s. Zahn is a technical writer at Apollo, which is now a division of Hewlett-Packard. The other authors are the principal architects of NCA and its reference implementation, the Network Computing System (NCS). This book serves as a guide for those who wish to use NCS or to implement NCA. While the second group is presumably smaller than the first, NCA is now being proposed as a standard, having been selected as part of the Open Software Foundation’s Distributed Computing Environment (DCE).

While the world has several grandiose communications architectures, such as SNA and OSI, the architects at Apollo who designed NCA produced a system that is simple without being powerless. The book documents their principal achievements: a remote procedure call (RPC) protocol, an RPC stub generator, and a low-level naming service called the Location Broker.

None of this background appears in the book. The author’s company is not mentioned on the cover. The DCE is not mentioned, as the decision to adopt NCA had not been announced when the book was published. The preface provides little additional context: it only contains a walk through the table of contents, though it does contain the first reference to Apollo (the reader is told about NCS and about certain Apollo documents.) In particular, the authors never mention the word “workstation” and give no hint of the crucial role NCS played in the Apollo domain. The book discusses four major topics: an RPC, a specification language for describing RPC interfaces (NIDL), a data representation (NDR), and the Location Broker.

Using an RPC greatly simplifies the task of writing distributed programs, as it allows the programmer to work in a simple and familiar paradigm. True leverage is gained if the RPC can shield the programmer from the problems of communicating across the network. The NCA RPC is covered in chapters 4 through 8. To understand Apollo’s contribution, look at two common problems in dealing with heterogeneous networks. First, consider the task of exchanging real-valued parameters between machines with different floating point representations. Next, consider the behavior of a remote call in the face of machine failure. The semantics of a procedure call requires that the caller block until the procedure returns control. If a remote machine crashes while processing our procedure, however, we should not remain hostage forever. While Apollo did not develop the first or the most widely used RPC, their solution is worth studying. It includes a protocol that allows machines with different formats to exchange data, without forcing additional work on machines with the same format (receiver makes right); at-most-once semantics for operations that should not be repeated (such as crediting a bank balance); and good behavior in the face of machine failures.

The Network Interface Description Language (NIDL) provides a C or Pascal interface for writing RPC interface definitions. NCS contains a compiler that transforms the NIDL description into code that marshals and unmarshals the arguments. A NIDL compiler takes the procedure definition and produces code that takes the arguments, orders them into packets, and puts them on the wire. NIDL is discussed in chapter 9, and the format used to represent information on the wire (NDR) is discussed in chapter 10.

The Location Broker provides a simple name service. A client should be able to request a service, such as a network printer, without knowing the address of a working machine that provides the service, just as a user can request a disk block without having to remember which blocks are bad. The NCS Location Broker, discussed in chapter 11, permits a search based on the type of a service. The book concludes with a glossary and an index.

Fewer than half the pages of the book are prose: most are taken up with manual pages and charts. If you need to know what packet type 0X10 stands for (quack) or what packet flag 0X10 means (maybe), then this reference will answer your questions. If, however, you want to know what makes NCS special, you will find no help here. For example, how does NDR compare with BER or XDR? Does OSI have a place for NDR? The book limits itself to a discussion of the interfaces. This is disappointing, as Mishkin and Leach have provided a spirited defense of their design in a string of well-written white papers. I missed the passion they brought to that work. It is as though Huck Finn had grown up and written a cookbook. Perhaps a drier tone was more appropriate to a reference work; perhaps some of the white papers could find their way into later versions of the text.

The book is handsomely printed, with many tables, and it would be useful for those writing programs with NCA. It could not be used as the only text for a course, as it provides no context. It contains no bibliography and no discussion of design alternatives.

Reviewer:  J. Parker Review #: CR123832
Bookmark and Share
 
Nca (C.2.1 ... )
 
 
Distributed Systems (C.2.4 )
 
 
Network Protocols (C.2.2 )
 
Would you recommend this review?
yes
no

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy