Book Review: Internetworking with TCP/IP vol. III: Client-Server programming and applications (BSD Sockets version) by Douglas E. Comer and David L. Stevens (Prentice-Hall, 1993)
暂无分享,去创建一个
In the days when software is getting more and more distributed, from operating systems to database platforms, it's really important to know how to design applications for such a context. That's exactly the purpose of the third volume of this relevant series based on the internet suite of protocols. Using the same instructive style as the previous ones, this new volume makes it easy to understand from basic concepts like the 'socket' system call, to complex software design such as the implementation structure of the Network File System (NFS). The book can be divided into distinct parts. In the first part, many introductory concepts are presented, as the client-server paradigm, the 'socket' interface and relevant system calls to support the design of distributed applications. In the next part, the authors delve deeply into a study of alternatives in client and server software design. After reading this part, a designer is in a good position to decide whether or not the server should be concurrent on demand. In other words, should the server create a child process to service each client, or should it use an alternative techniques such as process pre-allocation, to improve server's efficiency? Many techniques are detailed and both 'pros and cons' as well as algorithms and small examples are presented for each alternative. In another part of the book, the Comer and Stevens present a higher-level paradigm to develop distributed applications: the Remote Procedure Call (RPC). Using the conventional way programmers call procedures in their applications as a starting point, Comer and Stevens provide an easy access to the fundamentals of this higher-level paradigm, as well as the identification of remote programs and procedures, and the semantics of communication and authentication. The mechanism used to standardize the representation of data, known as External Data Representation (XDR) is used by the remote procedure calls to assure interoperability among different computer architectures, providing a standard way to represent integer and floating point numbers as well as other types of data. XDR is also presented in this part of the book. Rich in details, a presentation of RPCGEN, the utility to generate code for RPC applications design, is made using an example to explain its use. The final part of the book details two 'real-world' examples of applications implemented with RPC and sockets: respectively, Network File System(NFS) and TELNET. Studying their design, one can decide which paradigm works best for one's application. After reading the book, the reader may have a feeling of something missing. The authors make an excellent study especially about server software design in the first parts of the book. There are references at that point to NFS server implementations employing concurrency through the process pre-allocation technique. Perhaps extending this study for the RPC approach or presenting examples of concurrent RPC servers would make the book even more complete. Anyway, its contents and instructive style make the book a relevant reference for anybody involved with distributed applications development, from undergraduate students to professionals.