Distributed Application Programming in C++
Everything in the text is presented from a practical point of view based on real-world experience. The book takes a deeper look at why the various features of C++ are present, what programming styles they are intended to support, how and when to make best use of various standard idioms, and also the larger context in which development takes place. This book covers the software development process, source code organization, build time issues, the run time environment, etc.
- Mixed media product | 460 pages
- 175.26 x 233.68 x 33.02mm | 725.74g
- 01 May 2000
- Pearson Education (US)
- Prentice Hall
- Upper Saddle River, United States
Table of contents
(NOTE: Each chapter concludes with Exercises.)1. Introduction. Target Audience. What This Book Is About. Becoming One with C++. Text Overview. Context. Chapter Overview. About the Code.2. The Web Environment. Definition of Terms. A Trivial Example. Extending the Web Server. A Web-Based Architecture. Summary. Process and Scheduling.3. Concrete Data Types. Designing and Implementing a Class. Class Boolean. Discussion of Boolean.hpp. Class Index. Discussion of Index.hpp.4. to Talk of Many Things. A Hierarchical Strategy for Code Organization. Modules and Classes. The Four Canonical Class Members. Default Constructor Rationale. Copy Constructor Rationale. Assignment Operator Rationale. Destructor Rationale. Categories of Class Functions. Type-Specific Behaviors. Accessors. Constructors. Copying and Assignment. Operators. Conversions. Destructor. When to Inline. Const Correctness.5. Templatized Container Classes. Class Array. Discussion of Class Array. Class Queue. Discussion of Class Queue. Conclusion.6. Utilities and Namespaces. HashFunction. Discussion of HashFunction. StringUtils. Discussion of StringUtils. Namespaces.7. Runtime Errors and Exceptions. Detecting Errors. Exceptions. StdException. Discussion of StdException. Exception Specifications. Reporting and Handling Errors. Error Type. Error Severity. Error Details. Error Context. Error Policy. Conclusion.8. Automating Resource Management. Class RCPointer. Discussion of RCPointer.9. Putting the Pieces Together: Runtime Initialization. A Class for Initialization Data. Class NVPair. Class HashNVPair. Class IniData. On Efficiency.10. Program Startup and Execution Environment. Memory Model of Executing Program. Program Execution. Compile-Time Data Definitions Map to Data or Stack Segments. Stack Segment. C and C++ Parameter Passing and Function Call Mechanism. Stack Overflow. Stack Data Lifetime. Heap Segment. Memory Alignment Requirements. Heap Storage Allocation. Heap Storage Deallocation. Heap Fragmentation. Managing the Lifetime of Heap Storage. Do Not Mix malloc() and free() with new and delete. Data Segment. Startup Code Details. Shared Libraries.11. Sharing Data on a Single Computer. General Considerations. Sharing Data between Threads in a Single Process. Mutual Exclusion Semaphore. Class Mutex. Granularity of Mutual Exclusion. Discussion of Class MTResource. Sharing Data between Processes. Shared Memory. Class SharedMemory. Discussion of Class SharedMemory. Using Class SharedMemory. Why Multiprocessing?12. Sharing Data between Computers. Sockets. Socket Classes. Discussion of Socket.hpp. Discussion of Socket.cpp. Class SocketServer. Discussion of SocketServer.hpp. Discussion of SocketServer.cpp. Using the Socket Classes.13. Distributed Architectures. Topologies for Distributed Architectures. Clients And Services. Networked Streams. Command and Event Processors. Request-Response Protocols. Back to the Web. The Web Server and Our Code. Web-Based Application Frameworks. Distributed Objects. Remote Procedure Call. Object Distribution Considerations. CORBA. Choosing the Appropriate Distribution Architecture.14. Parting Words. Bibliography. Index.
About Randall A. Maddox
RANDALL A. MADDOX is a consulting software engineer who has worked on a wide range of projects, including Web applications, distributed systems, client/server systems, embedded systems, and database applications. In addition to working on real projects, he also teaches a 16-week C++ class to working enterprise developers.