List of Figures Foreword About This Book Chapter 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: A Networked Logging Service 0.6 Summary Part I Object-Oriented Network Programming Chapter I Communication Design Dimensions 1.1 Connectionless versus Connection-Oriented Protocols 1.2 Synchronous versus Asynchronous Message Exchange 1.3 Message Passing versus Shared Memory 1.4 Summary Chapter 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 Chapter 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_IO and ACE_SOCK_Stream Classes 3.7 The ACE_SOCK_Acceptor Class 3.8 Summary Chapter 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 Chapter 5 Concurrency Design Dimensions 5.1 Iterative, Concurrent, and Reactive Servers 5.2 Processes versus Threads 5.3 Process/Thread Spawning Strategies 5.4 User, Kernel, and Hybrid Threading Models 5.5 Time-Shared and Real-Time Scheduling Classes 5.6 Task- versus Message-Based Architectures 5.7 Summary Appendix 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 Appendix 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 Index