C++ Network Programming: Mastering Complexity Using ACE and Patterns

Published by Addison-Wesley Longman in 2002, ISBN 0-201-60464-7, order from amazon.com (US), amazon.co.uk (UK), amazon.de (Germany), www.amazon.fr (France), amazon.co.jp (Japan), Japanese translation, or Chinese translation.

This book is the first volume in the C++ Network Programming (C++NP) series, and hence this book is referred to as C++NPv1. There's a second volume called C++NPv2.

C++NPv1 is written by
Douglas C. Schmidt
Stephen D. Huston

Dr. Douglas C. Schmidt is the original developer of ACE. He is a Professor of Computer Science at Vanderbilt University, where he studies patterns and optimizations for distributed real-time and embedded middleware.

Stephen D. Huston is President and CEO of Riverace Corporation, a provider of technical support and consulting services to companies who want to keep software projects on track using ACE.

As networks, devices, and systems continue to evolve, software developers face the unique challenge of creating reliable networked applications within frequently changing environments. C++ Network Programming, Volume 1 provides practical solutions for developing and optimizing complex networked systems using the ADAPTIVE Communication Environment (ACE), a revolutionary open-source framework that runs on dozens of hardware platforms and operating systems.

This book guides software professionals through the traps and pitfalls of developing efficient, portable, and flexible networked applications. It explores the inherent design complexities of concurrent networked applications and the tradeoffs that must be considered when working to master them.

C++ Network Programming begins with an overview of the issues and tools involved in writing concurrent networked applications. The book then provides the essential design dimensions, patterns, and principles needed to develop flexible and efficient concurrent networked applications. The book's expert author team shows you how to enhance design skills while applying C++ and patterns effectively to develop object-oriented networked applications.


Supplemental Material


Table of Contents

Foreword
About this Book

0. Design Challenges, Middleware Solutions, and ACE
0.1. Challenges of Networked Applications
0.2. Networked Application Design Dimensions
0.3. Object-Oriented Middleware Solutions
0.4. An Overview of the ACE Toolkit
0.5. Example Application => A Networked Logging Service
0.6. Summary

Part I Object-Oriented Network Programming

1. Communication Design Dimensions
1.1. Connectionless vs. Connection-oriented Protocols
1.2. Synchronous vs. Asynchronous Message Exchange
1.3. Message-passing vs. Shared Memory
1.4. Summary

2. An Overview of the Socket API
2.1. An Overview of Operating System IPC Mechanisms
2.2. The Socket API
2.3. Limitations of the Socket API
2.4. Summary

3. The ACE Socket Wrapper Facades
3.1. Overview
3.2. The ACE_Addr and ACE_INET_Addr Classes
3.3. The ACE_IPC_SAP Class
3.4. The ACE_SOCK Class
3.5. The ACE_SOCK_Connector Class
3.6. The ACE_SOCK_Stream and ACE_SOCK_IO Classes
3.7. The ACE_SOCK_Acceptor Class
3.8. Summary

4. Implementing the Networked Logging Service
4.1. Overview
4.2. The ACE_Message_Block Class
4.3. The ACE_InputCDR and ACE_OutputCDR Classes
4.4. The Initial Logging Server
4.5. The Client Application
4.6. Summary

Part II Concurrent Object-Oriented Network Programming

5. Concurrency Design Dimensions
5.1. Iterative vs. Concurrent vs. Reactive Servers
5.2. Processes vs. Threads
5.3. Process/Thread Spawning Strategies
5.4. User vs. Kernel vs. Hybrid Threading Models
5.5. Time-shared vs. Real-time Scheduling Classes
5.6. Task- vs. Message-based Architectures
5.7. Summary

6. An Overview of Operating System Concurrency Mechanisms
6.1. Synchronous Event Demultiplexing
6.2. Multi-Processing Mechanisms
6.3. Multi-Threading Mechanisms
6.4. Synchronization Mechanisms
6.5. Limitations with OS Concurrency Mechanisms
6.6. Summary

7. The ACE Synchronous Event Demultiplexing Wrapper Facades
7.1. Overview
7.2. The ACE_Handle_Set Class
7.3. The ACE_Handle_Set_Iterator Class
7.4. The ACE::select() Methods
7.5. Summary

8. The ACE Process Wrapper Facades
8.1. Overview
8.2. The ACE_Process Class
8.3. The ACE_Process_Options Class
8.4. The ACE_Process_Manager Class
8.5. Summary

9. The ACE Threading Wrapper Facades
9.1. Overview
9.2. The ACE_Thread_Manager Class
9.3. The ACE_Sched_Params Class
9.4. The ACE_TSS Class
9.5. Summary

10. The ACE Synchronization Wrapper Facades
10.1. Overview
10.2. The ACE_Guard Classes
10.3. The ACE Mutex Classes
10.4. The ACE Readers/Writer Lock Classes
10.5. The ACE Semaphore Classes
10.6. The ACE Condition Variable Classes
10.7. Summary

A. Design Principles for ACE C++ Wrapper Facades
A.1. Overview
A.2. Use Wrapper Facades to Enhance Type-safety
A.3. Simplify for the Common Case
A.4. Use Hierarchies to Enhance Design Clarity and Extensibility
A.5. Hide Platform Differences Whenever Possible
A.6. Optimize for Efficiency
A.7. Summary

B. The Past, Present, and Future of ACE
B.1. The Evolution of ACE
B.2. The Road Ahead
B.3. Concluding Remarks

Glossary
Bibliography















Back to C++ Network Programming home page.