C++ Network Programming Volume 2: Systematic Reuse With Ace and Frameworks (C++ in Depth Series) (英語) ペーパーバック – 2002/10/29
Kindle 端末は必要ありません。無料 Kindle アプリのいずれかをダウンロードすると、スマートフォン、タブレットPCで Kindle 本をお読みいただけます。
Do you need to develop flexible software that can be customized quickly? Do you need to add the power and efficiency of frameworks to your software? The ADAPTIVE Communication Environment (ACE) is an open-source toolkit for building high-performance networked applications and next-generation middleware. ACE's power and flexibility arise from object-oriented frameworks, used to achieve the systematic reuse of networked application software. ACE frameworks handle common network programming tasks and can be customized using C++ language features to produce complete distributed applications.
C++ Network Programming, Volume 2, focuses on ACE frameworks, providing thorough coverage of the concepts, patterns, and usage rules that form their structure. This book is a practical guide to designing object-oriented frameworks and shows developers how to apply frameworks to concurrent networked applications. C++ Networking, Volume 1, introduced ACE and the wrapper facades, which are basic network computing ingredients. Volume 2 explains how frameworks build on wrapper facades to provide higher-level communication services.
Written by two experts in the ACE community, this book contains:
- An overview of ACE frameworks
- Design dimensions for networked services
- Descriptions of the key capabilities of the most important ACE frameworks
- Numerous C++ code examples that demonstrate how to use ACE frameworks
C++ Network Programming, Volume 2, teaches how to use frameworks to write networked applications quickly, reducing development effort and overhead. It will be an invaluable asset to any C++ developer working on networked applications.
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 President and CEO of Riverace Corporation, a provider of technical support and consulting services to companies who want to keep software projects on track using ACE. Steve has nearly ten years of experience with ACE, and more than twenty years of software development experience, focusing on network protocol and C++ networked application development in a wide range of hardware and software environments.
Amazon.com で最も参考になったカスタマーレビュー (beta)
systems and languages looks like it should be easy, but it
is emphatically not. The nave designer of networked
applications will encounter a thicket of problems including
lack of portability, distributed performance bottlenecks,
maintaining correctness during shutdown, and managing
recovery from partial failures.
"C++ Network Programming, Volume 2, Systematic Reuse with
ACE and Frameworks" by Douglas Schmidt and Stephen Huston
provides some powerful help in the design and implementation
of networked applications. This help comes in the form of
A few words about the definition of "framework." The first
step up from writing applications that interface directly
with operating systems is to insert object-oriented wrappers
between the application and lower level services. These
wrappers are classes that encapsulate the low level,
functionally specified, services such as operating systems
and protocol stacks. This first step was taken in the
predecessor volume to the present book, "C++ Network
Programming, Volume 1: Mastering Complexity with ACE and
Patterns", by the same authors, where a collection of
wrappers, called the ACE wrappers, is provided that not only
raises the level of the application interface from
functional to object-oriented, but also provides portability
at the same time.
For example, consider an application that directly uses
sockets. This application would depend on the syntax and
functional details of that operating system's s operating
system's socket implementation. By inserting the ACE
wrappers, the application acquires an object interface to
socket capabilities, and in addition becomes portable across
a large number of compilers, operating systems, and
But a set of wrapper classes does not solve the networked
application designer's problems, any more than a pile of
bricks is a house.
Frameworks, which are the subject of the present book, are
the next step up in power from wrappers. A framework is an
integrated set of classes into which application designers
plug code that is unique to their applications. The
frameworks described in the present book handle a large part
of the difficulty inherent in network programming, leaving
application designers to deal primary with their
applications' local functionality.
For example, one of the frameworks described in the book is
the Acceptor-Connector Framework. This framework relieves
the user of dealing with the numerous tricky details
inherent in the conceptually simple process of connecting
clients with servers, such as address formats, protocols,
initialization, and message queue locking.
Readers should be aware that the present book is not a
general-purpose text on network programming using C++; this
book is a focused exposition of the ACE frameworks. Readers
will be most comfortable reading this book if they are
already familiar with software design and architecture
patterns, including those described in "Pattern-Oriented
Software Architecture: Patterns for Concurrent and Networked
Objects, Volume 2" by Douglas Schmidt et al, and in the
famous Gang of Four book: "Design Patterns: Elements of
Reusable Object-Oriented Software" by Eric Gamma et al.
The large amount of code that implements the wrappers of
volume 1 and the frameworks of volume 2 is available for
download for free. This code is in wide use today.
Designers of networked applications, when offered a large
pile of code that purports to do a lot of what needs to be
done, must trade off the anticipated saving in design and
implementation time against the anticipated time to
understand what the offered code is intended to do and what
it actually does. This tradeoff can lead a reasonable
designer to ignore existing code in favor of hand-writing an
entire application. In the case of the ACE wrappers and
frameworks, as documented and explained by the two books
mentioned here, combined with the open-source nature of the
implementing code and its widespread employment in real
applications, make the result of this tradeoff pretty clear:
read the books, use the code.
"Systematic Reuse with ACE and Frameworks" reads as a tutorial for the seasoned C++ programmer, but also presents the material in small digestible chunks that you can refer to again and again. It lays out a series of best-practices, and is a "must-have" for any programmer who wants to CORRECTLY create strong networking software or even wants to see good examples of how patterns can simplify effort in such a complex environment.
of volume 1, of doing an excellent job of explaining how to
program robust network software in C++ using the ACE framework.
The book is well-structured, and easy to read. Each section explains:
- the general concepts associated with a specific network programming
topic, for example reactive event loops, or asynchronous I/O
- the underlying operating system API's associated with each topic, for
example, for reactive event loops, the Unix select()
or the Windows WaitForMultipleObjects() calls
- the underlying design patterns for properly using these facilities,
such as the Reactor, Proactor, Service Configurator
- and the accompanying C++ class in ACE for using this design pattern
The text and code examples are very clear and easy to follow.
I particularly like the technique of using sidebars throughout the
text, which draws your attention to particularly interesting
nuggets of information.
My favorite parts of this book were the parts which covered in depth three
of the most core concepts in the ACE framework:
- the Reactor (reactive event loops),
- the Proactor (using asynchronous I/O for dispatching events),
- the ACE_Task (using concurrency/multithreading efficiently in an
Understanding these core concepts is essential for building
high-performance middleware and networked software. These concepts
were used extensively by Schmidt, when his team used ACE to build
The ACE ORB (TAO), a C++ CORBA implementation, so this book
will help with understanding some of the internal implementation
details of TAO.
For new users of ACE, this book is a good introduction, alongside volume 1.
For experienced users of ACE, this book is an excellent
refresher, and concisely explains many core ACE concepts, accompanied
with illustrative examples. This book will make an
excellent addition to the bookshelf of anyone serious
about C++ network programming.
Schmidt and his research group has put in many years of painstaking research in this work and evolved the ACE-TAO network programming platform which these texts use to illustrate the sound guidance on the principles and practices they refer to in the texts.
The books are not meant to be exhaustive in their descriptions, rather give concise and effective pointers and guidance in the most important areas - if you need exhaustive details and full working code, go to the website and get the source and research papers.
Writing network software is hard and developing in C++ is no picnic either. Doing the two together for enterprise level of scalability and performance is an extremely complex and difficult task. Realistically it takes many revisions to get this type of software robust, and bug free. Personally, I wish I had this book when I started out in my personal quest of discovery in these areas. The book eloquently and effectively identifies and illustrates the moving parts of any generic canonical client or server side network application through patterns. These in my opinion are one of the strengths of Schmidt's work. The other is the example implementations illustrated in ACE-TAO for the diehards wanting to see the code details that work. The authors also highlight oft forgotten issues and gotchas that might surface during development. The book does this by talking about the design of the ACE toolkit. Professor Schmidt developed the ACE toolkit which he uses to express his experience for others to reuse that is another of the books strengths.
The text helps make aware the general network programming community of the power of a pattern language to create such complex software, and so manage complexity yet preserve and identify domain knowledge in creating such software. The text should be studied with the ACE-TAO toolkit freely available from the website in the book.
- 洋書 > Computers & Technology > Networking > Network Programming
- 洋書 > Computers & Technology > Networking > Networks, Protocols & APIs > Networks
- 洋書 > Computers & Technology > Programming > Languages & Tools > C
- 洋書 > Computers & Technology > Programming > Software Design, Testing & Engineering > Object-Oriented Design
- 洋書 > Education & Reference
- 洋書 > Medical Books