C++ Network Programming, Volume I: Mastering Complexity with ACE and Patterns (C++ in Depth Series) (英語) ペーパーバック – 2001/12/10
Kindle 端末は必要ありません。無料 Kindle アプリのいずれかをダウンロードすると、スマートフォン、タブレットPCで Kindle 本をお読みいただけます。
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:
- C++ network programming, including an overview and strategies for addressing common development challenges The ACE Toolkit
- Connection protocols, message exchange, and message-passing versus shared memory
- Implementation methods for reusable networked application services
- Concurrency in object-oriented network programming
- Design principles and patterns for ACE wrapper facades
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.
ACE makes all of that much easier, and delivers the promise of true reuseability; not just classes, but common behaviors (patterns). This book explains why ACE was needed, the problems it solves, and how to use it. Though it's highly technical, it's not boring or overly verbose -- the problems developing networked apps are presented, and the solution ACE uses as well. Doug and Steve did an amazing job with this ... highly recommended.
As somebody who has written native code for handling Sockets, process management, threading etc on various platforms, then over time integrated OO and patterns to make it easier to use (including across platforms), and slowly worked my way towards what I consider a definitive way of doing things, I find reading this book interesting in that it's like a tick list to which I can go "yeap, I found that too" with just the odd "ooh, actually I would do that differently in this specific situation, but for the general case yes that's how I do it too". So, for me this book is interesting now, but if I was new to ACE (I'm not) or new to the underlying platform APIs I am not so sure how interesting I would find it. It gives more of a taster of what ACE can do than providing a complete tutorial. It gives more of a justification of why ACE does things the way it does rather than provide a complete reference. So, interesting for me now, but I'm really not sure who the book is aimed at. It could be used as one step of a tutorial, giving familiarity of what ACE can do, if not enough detail to really do serious stuff. It could be used to persuade people that it's usually better to use ACE than invest time and money re-inventing the wheel... Otherwise, I just don't know...
Is ACE worth using? Most of the time, yes. If you need a book about ACE then this is probably the place to start, but online is the place to find the detailed information that you will need when using it.
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.
It conveys, clearly, concisely and precisely a wealth of experiences from the development/coding trenches that is hard to come by and is rarely found in one place or even so well organized. The text enumerates in detail how issues faced during development were resolved in a manner that met a multitude of complex development criteria. The book breaks down ACE into a set of key crucial areas/modules, and then goes to work on each piece. It then surgically disects and explains the details of each line of code of the ACE toolkit and how and why the API's were developed the way they were and today what benefits and critical issues they solve as a result of those choices. I am eager to read the completed second volume.
I'd recommend this text to any and all students and practioners alike who are involved in distributed system (sockets, CORBA, RPC... etc with C++) development, even if they dont plan on using ACE, simply because of the high quality development advice and the way it makes one aware of pitfalls and issues that might and invariably do arise in large scale distributed systems development.
- 洋書 > Computers & Technology > Networking > Network Programming
- 洋書 > Computers & Technology > Networking > Networks, Protocols & APIs > Networks
- 洋書 > Computers & Technology > Programming > Languages & Tools > C > Tutorials
- 洋書 > Computers & Technology > Programming > Software Design, Testing & Engineering > Object-Oriented Design
- 洋書 > Education & Reference