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