As networks, devices, and systems continue to evolve, software engineers face the unique challenge of creating reliable distributed applications within frequently changing environments. C++ Network Programming, Volume 1, provides practical solutions for developing and optimizing complex distributed 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 distributed concurrent 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.
Readers will find coverage of:
With this book, C++ developers have at their disposal the most complete toolkit available for developing successful, multiplatform, concurrent networked applications with ease and efficiency.
Dr. Douglas C. Schmidt is the original developer of ACE and The ACE ORB (TAO). He is a professor at Vanderbilt University, where he studies patterns, optimizations, middleware, and model-based tools for distributed real-time and embedded systems. He is a former editor-in-chief of C++ Report and columnist for C/C++ Users Journal.
Stephen D. Huston is an internationally recognized expert in networked application development. He has more than 25 years of software development experience, focusing on network protocol and C++ networked application development in a wide range of hardware and software environments. Steve has been working with the ACE development team for over 10 years since founding Riverace Corporation, the premier provider of ACE support, training, and consulting services.
I work with high performance distributed real-time embedded system factory automation equipment and network-enabled software defined radios. I remember diving into these areas of software for the first time and spending A LOT of time wrestling with the idiosyncrasies of the socket and threading APIs of not just one but a few operating systems. It wasn't until I started using the ACE classes and patterns described in this book that I was able to master these complexities and get on with solving the problem of the business domain for which the software was being written. This book does a great job of giving you not only the view of networked and concurrent applications from 30,000 feet (with the domain analysis of network application development and the resulting isolation of important design dimensions) but also the view from the battlefield trenches (with code that abstracts away the gory details of native operating system APIs) as well as the stuff in between (real life networked concurrent programming examples that bring it all together).
After reading the book, I definitely feel I have gained some invaluable experience from the authors' intense expertise with the gory details of and differences between operating system APIs. They explain these details and differences in a very clear fashion and then show how you can program more productively using the ACE classes that abstract away these platform differences, without loss of efficiency, as well as prevent you from making common nasty programming errors that could cost you hundreds of hours of debugging time. They explain, in full, the C++ techniques that ACE uses to achieve this. They explain not only how these techniques work but why they are used. I feel my expertise and judgment as a C++ network/concurrent programmer have increased greatly as a result of reading the book.
Despite the complexity of the subject matter, the authors' writing style enables you to absorb and understand the information at a very fast rate. I highly recommend this book for anybody involved with programming (you should know C++) as it captures the essence AND details of how a complex programming domain can be systematically and methodically tackled and a solution formulated and implemented effectively in real-world applications.