Client/Server Computing for Technical Professionals: Concepts and Solutions

Client/Server Computing for Technical Professionals: Concepts and Solutions

by Johnson M. Hart

If you are in the process of building a client/server system, this practical book will give you the information you need to make the right choices, get started, and build the client/server environment that effectively meets your needs. It describes client/server concepts, common applications, design principles, and offers vendor-independent advice on all the major…  See more details below


If you are in the process of building a client/server system, this practical book will give you the information you need to make the right choices, get started, and build the client/server environment that effectively meets your needs. It describes client/server concepts, common applications, design principles, and offers vendor-independent advice on all the major client/server products and technologies. This book explains in clear, readable language how client/server technology works. You will learn about the key components of distributed client/server computing, including distributed files, databases, programming, and graphics systems, as well as Internet client/server systems. All of the major client/server technologies are covered - ONC, X Window System, DCE, World Wide Web, CORBA, NFS, COM, and ODBC - with advice on their unique features, advantages, and disadvantages. You will find the latest information on such topics as Remote Procedure Calls (RPCs) and how they differ from Interprocess Communication (IPC) and Local Procedure Calls (LPCs). In addition, the book shows you how to write simple client/server programs. Important standards and their roles in client/server computing are also explained. Numerous sidebar case studies illustrate how all of these concepts, techniques, and applications come together to create client/server systems in a real-world context.

Read More

Editorial Reviews

A guide to choosing, getting started on, and building an appropriate client/server environment. Explains the key components of distributed client/server computing including distributed files, databases, programming, and graphics systems, as well as Internet systems and all the major client/server technologies. Includes a section on how to write simple client/server programs and how they work in context. Annotation c. Book News, Inc., Portland, OR (

Product Details

Addison Wesley Professional
Publication date:
Product dimensions:
7.35(w) x 9.20(h) x 0.97(d)

Related Subjects

Read an Excerpt

PREFACE: "Client/server" is one of the most ubiquitous phrases of the '90s. The trade press, advertisements, and news media are filled with stories of client/server products and solutions. The client/server concept and the closely related development of distributed computing solutions reflect a sweeping change in how computer systems are designed and deployed.

Anyone who deals with modern computing technology, whether as a user, purchaser, administrator, or vendor must understand what client/server means and does not mean, and what its benefits and risks are. We wrote this book to describe distributed client/server computing to a broad class of computer professionals, users, and decision makers.

In the simplest possible terms, client/server computing means that two parts of a single program are run by two (or more) computers. The two parts of the program are called, naturally enough, the client and the server. The server provides services to the client. This simple idea quickly leads to powerful capabilities, extended requirements, interesting technical issues, and sophisticated solutions, which we explore and explain.

Client/server computing embraces numerous products, strategies, and standards. We portray client/server computing as a natural, inevitable, and beneficial step in the evolution of computing technology. In the process we make some generalizations and cite many examples. We even make a few provocative statements, and venture risky predictions about future developments. We stand by these opinions, which we have tried out in designs, product development, installations, seminars, and conversations. In this book, we share our observations and predictions withyou.


We have aimed this book at you, the computer professional. We feel that there is value in this book for a wide audience. You are in the audience if:

  • You program computers for a living and your livelihood depends on knowing client/server programming and systems.

  • You are a computer architect designing a client/server application or planning how your organization can move to client/server computing.

  • You are a technical professional designing a distributed application for your organization and need to understand the variety of design approaches, products, and frameworks that are available.

  • You are studying computer science and want to learn more about distributed computing issues and solutions.

  • You are involved with hardware and software acquisition for your organization and want to know what your choices are in the client/server arena. You want to know how to look under the hood of a client/server system, kick its tires, and be able to choose from the many alternatives.

  • You manage people doing any of these activities and need to learn more about the choices, the technologies, and how they work.

  • You are simply curious about client/server computing.

Portions of the third part assume that you know something about programming. The rest of the book requires no programming experience, but computing experience and knowledge always help. We have written examples for the second part in the C programming language, but familiarity with nearly any other programming language should be sufficient to follow the general concepts.


The book covers all the major aspects of client/server computing.The first two chapters position client/server computing as the natural and most efficient architecture to integrate networked hardware and software. We develop a vocabulary and show the major forms of client/server computing. We introduce the major benefits, problems, and risks.

In the first part, we introduce the basic distributed computing services, security, and naming and location. Client/server computing is both interesting and difficult largely because the computing systems are distributed, communicating over local and wide area networks. Key issues are that communication is not secure and it is necessary to identify and locate computing resources. By discussing these topics early, we give a taste of the problems caused by distribution and lay the groundwork for what follows.

In the second part, we discuss distributed information systems, including today's popular implementations (such as NFS and Novell NetWare) and candidates for future popularity (such as DFS). We also describe how distributed databases work and explain database replication. In addition, this part describes wide area, distributed information systems such as the World Wide Web.

In the third part, we explain models for distributed program logic, especially remote procedure calls (RPCs) and distributed objects. We use a small client/server program to show basic principles. We discuss DCE and ONC implementations of RPCs and we compare RPCs to other programming models using messaging or distributed objects. Client/server programming has a unique set of problems, such as how to ensure security and reliability. We discuss these problems and show how to solve them in an RPC environment. We emphasize RPCs because they most directly embody the client/server concept. This part concludes with a discussion of distributed object-oriented computing, using CORBA and OLE/COM as examples.

In the fourth part, we describe what we call the distributed user interface, followed by discussions of systems management and client/server frameworks. We show how a client and server can cooperate to render graphics on a screen. We summarize the X Window System, the primary implementation for distributed presentation. Next, this part discusses the problems of managing distributed computing resources. Finally, we pull all this information together to show how complete client/server computing environments can be built. We use the Distributed Computing Environment (DCE) and the Common Object Request Broker Architecture (CORBA) as examples, and discuss current and possible future developments.

Standards, Products, and Reference Systems

We want to say a word or two about the standards, operating systems, and commercial products that we mention in varying detail from time to time. Not everyone will agree with all of our choices, but we believe that they illustrate the points well and make good "reference systems" against which to compare similar systems.

Some products and standards, such as UNIX, the Microsoft Windows family (Windows 3.1, NT, and 95), TCP/IP, DCE, NFS, and CORBA are discussed because of their clear importance. Other products are mentioned only in passing or as being representative of a class of product. The field is so broad and diverse that some of our choices are arbitrary; we apologize for those systems that we have doubtlessly overlooked. This book is not a product catalog, a buyer's guide, or a product endorsement. We do, however, provide sufficient information so that products can be understood, properly positioned in the client/server world, and evaluated.

In particular, we discuss the Distributed Computing Environment (DCE) extensively to illustrate the components of a client/server system and how they work together. Why DCE? DCE is not perfect, it is not the most widely used system, and its future is unclear. Nonetheless, DCE is our client/server reference point for several reasons:

  • DCE is open, interoperable, scalable, and integrated. DCE is available on a wide class of host systems, from PCs to mainframes.

  • DCE is more complete than any other widely available system, and it addresses the major requirements. Therefore, DCE is a good reference model for evaluating other systems.

  • DCE was designed for client/server computing. An understanding of the DCE components, their operation, their methods for addressing requirements, and their integration can help you understand other solutions.

  • More advanced systems such as those based on distributed object-oriented computing, are not yet as firmly established.


Many people have generously contributed their time to review all or parts of this book. They have made numerous helpful and insightful comments, and this book would not have been possible without them. Numerous friends and colleagues have helped out as well with advice, information, and valuable encouragement. So, we would like to express our gratitude alphabetically to: Jeff Allen, Robert Attwood, Matthias Autrata, Doug Blewett, Sumner Blount, David Chappell, Ellis Cohen, Joe Comuzzi, Daniel Dardailler, Frank D'Arrigo, Kathryn DeNito, Gail Driscoll, Eric Eldred, Art Gaylord, Rosa Gonzales, Janet Gunn, Paul Hagstrom, Arthur Lewbel, Robert Mathews, Scott Meeks, Andy Nemec, Rich Salz, Douglas Schmidt, and Paul Shalek. Sample home pages are courtesy of The MathWorks, Inc. and of Barry Bakalor. The image of two jugglers passing computers and clubs is courtesy of Greg Cohen. Responding to all the suggestions was time-consuming but definitely worthwhile. Remaining errors are ours, despite the best efforts of all those named above. Our long-suffering literary editor, Judy Tarutz, spread a healing balm of red ink over our disease-ridden prose. Sarah Tuttle took on a goodly percentage of the dreaded production edit.

Our editor, Carol Long, deserves a special vote of thanks for just the right mix of carrots and sticks, encouragement and cajoling. Carol kept us on track and almost on schedule.

Finally, we wish to thank our friends and colleagues from long ago at Apollo Computer who showed us what it could be even before it was called "client/server."

My wife Linda has been a steadfast supporter throughout this effort with her invaluable love and understanding.
John Hart

I want to thank my wonderful wife Marilyn for her wisdom, patience, and suggestions. I'd also like to thank my father for suggesting that my books would read better if only there was more sex in them. (Look dad: Page 1, Line 1!)
Barry Rosenberg


Read More

Customer Reviews

Average Review:

Write a Review

and post it to your social network


Most Helpful Customer Reviews

See all customer reviews >