Home :: Books :: Computers & Internet  

Arts & Photography
Audio CDs
Audiocassettes
Biographies & Memoirs
Business & Investing
Children's Books
Christianity
Comics & Graphic Novels
Computers & Internet

Cooking, Food & Wine
Entertainment
Gay & Lesbian
Health, Mind & Body
History
Home & Garden
Horror
Literature & Fiction
Mystery & Thrillers
Nonfiction
Outdoors & Nature
Parenting & Families
Professional & Technical
Reference
Religion & Spirituality
Romance
Science
Science Fiction & Fantasy
Sports
Teens
Travel
Women's Fiction
The ACE Programmer's Guide: Practical Design Patterns for Network and Systems Programming

The ACE Programmer's Guide: Practical Design Patterns for Network and Systems Programming

List Price: $49.99
Your Price: $42.63
Product Info Reviews

<< 1 >>

Rating: 5 stars
Summary: ... no better way to learn ACE
Review: ... than from the experts -- those who design / maintain / extend / port it, and some of those very same people were involved in the creation of this guide.

OK, we've all seen the problems with networked application development -- Windows does it differently than Solaris, which does it differently than Linux, which does it differently than VxWorks, which does it differently than Mac OSX , which does it differently than ... etc. Sockets, threads, timers, mutexes, synchronization primitives, etc. are the bane of developers who want to make their applications connect and communicate with one another in heterogeneous environments. Even the technologies that are cross-platform more or less (BSD sockets, pthreads, shared memory, etc.) are sometimes difficult to use and easy to introduce bugs with. What is a networked application developer to do?

Enter ACE -- the ADAPTIVE Communication Environment, which aims (and largely succeeds) in providing a cross-platform, pattern-based systems framework that hides the platform specifics without sacrificing speed, makes BSD sockets, threads, and system APIs object-based, and allows the same code to be used on a variety of platforms. ACE is used in many large projects around the world which needed to be highly scalable, predictable, portable and easily maintainable, all at once. Enter this book, which does an admirable job both introducing ACE and many of the design patterns it implements to the newcomer, and making some of the finer points of ACE more cogent to those of us who have been working with it for awhile. Each chapter has an introduction (which pattern we're covering now, what problems it solves, how ACE implements it), lots and lots (and lots and lots) of easy-to-read source code examples, and plenty of plain-english explanation as to how this stuff works. In my continuing ACE education, this book (as well as the C++NP books and the ACE-users list) truly helps me to understand ACE, patterns, and all that they are capable of. I am a far better developer as a result, and I cannot give this book any higher praise than that.

Rating: 4 stars
Summary: Tries to Decouple C++ from Specific OS details
Review: Network programming can be very difficult, given such issues as latency and different hardware/operating systems on your net. At the very least, the latter can have different byte orderings an datatype sizes, if you write in C or C++. Now in C, by the late 1980s, such headaches caused several unix vendors (mainly Sun) to converge on supporting a key utility, rpcgen (and affiliated routines). This let you write common C code for client/server applications, and compile these on various platforms. Lo, things usually worked!

But as software projects grew in complexity, writing in procedural language like C became harder. Hence the rise of C++. Well, wouldn't it be nice to reimplement and extend rpcgen? (It had numerous limitations.) The idea was to finesse/bury OS specific details at a lower level of the code, where you could often ignore it. You can imagine ACE as filling this need. I'm not saying that this is how or why ACE was developed. But I am trying to argue from YOUR background, which I assume is C++ and C.

The book describes significantly more functionality in ACE than merely an extension of rpcgen. Even if you don't have a C++ networking application, but are writing a standalone application, ACE may be useful. It increases your chances of writing portable code. For one thing, it heavily downplays the use of OS-supplied compiler macros. In both C++ and C code that will be maintained on several platforms, this is a notorious source of bugs. Very brittle. Just having ACE subsume these issues should give a maintenance productivity gain. You won't see this immediately when coding the first version of your application. But experienced developers should see the payoff.

Plus, ACE also offers higher level design patterns. Here, I don't know how applicable they might be to your specific problems. But just having the patterns increases your coding arsenal.

Rating: 5 stars
Summary: What would you do with all this power?
Review: This book is yet another great example of how the ACE framework can save you a lifetime of development. Within this book is the knowledge and experience to excell your applications to the next level and become more productive then ever. If your code base deals with networking or even if you just need to have cross platform compatibility then this book is a must have to teach you the ways of ACE.

Rating: 5 stars
Summary: Great way to learn the ACE Framework
Review: This is probably the most practical book ever written on this topic. I have read the C++ Network Programming books, and I believe that this Programmer's Guide is even better.

ACE, the ADAPTIVE Communication Environment, has been around since the early 90's and thanks to over 1700 contributors over the past decade or so, it has become a very powerful, reusable, Object Oriented, beautifully engineered, designed, and developed framework that is creeping its way to the hearts of developers, project leads, and managers all around the world and in many industry verticals.

ACE has made one of the hardest things to do as a developer, network programming much simpler, but that's not all. That's where this book comes into play. The other books focus on the network programming of ACE, and even though they cover the topic VERY well, they don't convey the other powerful features that ACE has:
ACE Logging Facility
ACE Runtime and configuration facility
ACE (STL like) containers, allocators, etc...

Right of the bat, this book covers those details and shows the reader concrete examples and ways to apply these examples in real life.
The author spends the next 4 chapters (6-9) going over the IPC facilities of ACE. It starts from basic SOCKET programming, to SIGNALS, to the use of TIMERS and it ends with the odds and ends of IPC. These topics were covered in the C++ network programming books before, but this book, instead of talking about it, SHOWS the reader how things are done. The Reactor and the Proactor frameworks are covered in chapters 7 and 8. As the author mentions in chap 7:
The ACE reactor framework was designed to implement a flexible event-handling mechanism is such a way that applications need never write the central, platform-dependent code for their event-handling needs.
Then the author goes into an extensive detail of how this is done, and in its closing remarks, he says the following:
With little ingenuity, your reactor-based application can turn on the foyer light when someone pulls into your driveway or mute the television when the phone rings.
The Proactor framework is covered in full detail in the following chapter. The author does a great job at telling and showing the differences between the two design patterns and when to use one vs. the other. When all said and done, the author explains how these two design patterns can make a killer combo.
The book is more like a personal notebook that you would create for yourself in that you write down notes, hints, do's and don'ts and few lines of code at a time telling yourself how you made something to work properly.

In Part III, Processes and Threads are covered. Even though the author has included these chapters after the IPC section, a great deal of detail was spent on showing the reader that these classes are not necessarily related to the IPC set of classes. The reader can literally read part III of this book, and gain a good understanding of how to use the thread and the process management classes - remind you that these two topics are difficult to grasp and programming is a bit difficult, but the author shows how cleanly these two topics were covered in ACE. The icing on the cake is the last chapter in Part III: Thread Pools. Two threading models are covered:
Half-sync/half-async model
Leader/follower model
I will leave the details of these two models to the reader.

Part IV covers the "advanced topics" such as shared memory, the configuration framework, timers, and the naming service. Again, for each section an extensive example is given, which makes the topic easy to understand and to follow. The configuration framework is a very well covered section, as it is something that any of us can benefit from in our next design.

Rating: 5 stars
Summary: Great way to learn the ACE Framework
Review: This is probably the most practical book ever written on this topic. I have read the C++ Network Programming books, and I believe that this Programmer's Guide is even better.

ACE, the ADAPTIVE Communication Environment, has been around since the early 90's and thanks to over 1700 contributors over the past decade or so, it has become a very powerful, reusable, Object Oriented, beautifully engineered, designed, and developed framework that is creeping its way to the hearts of developers, project leads, and managers all around the world and in many industry verticals.

ACE has made one of the hardest things to do as a developer, network programming much simpler, but that's not all. That's where this book comes into play. The other books focus on the network programming of ACE, and even though they cover the topic VERY well, they don't convey the other powerful features that ACE has:
ACE Logging Facility
ACE Runtime and configuration facility
ACE (STL like) containers, allocators, etc...

Right of the bat, this book covers those details and shows the reader concrete examples and ways to apply these examples in real life.
The author spends the next 4 chapters (6-9) going over the IPC facilities of ACE. It starts from basic SOCKET programming, to SIGNALS, to the use of TIMERS and it ends with the odds and ends of IPC. These topics were covered in the C++ network programming books before, but this book, instead of talking about it, SHOWS the reader how things are done. The Reactor and the Proactor frameworks are covered in chapters 7 and 8. As the author mentions in chap 7:
The ACE reactor framework was designed to implement a flexible event-handling mechanism is such a way that applications need never write the central, platform-dependent code for their event-handling needs.
Then the author goes into an extensive detail of how this is done, and in its closing remarks, he says the following:
With little ingenuity, your reactor-based application can turn on the foyer light when someone pulls into your driveway or mute the television when the phone rings.
The Proactor framework is covered in full detail in the following chapter. The author does a great job at telling and showing the differences between the two design patterns and when to use one vs. the other. When all said and done, the author explains how these two design patterns can make a killer combo.
The book is more like a personal notebook that you would create for yourself in that you write down notes, hints, do's and don'ts and few lines of code at a time telling yourself how you made something to work properly.

In Part III, Processes and Threads are covered. Even though the author has included these chapters after the IPC section, a great deal of detail was spent on showing the reader that these classes are not necessarily related to the IPC set of classes. The reader can literally read part III of this book, and gain a good understanding of how to use the thread and the process management classes - remind you that these two topics are difficult to grasp and programming is a bit difficult, but the author shows how cleanly these two topics were covered in ACE. The icing on the cake is the last chapter in Part III: Thread Pools. Two threading models are covered:
Half-sync/half-async model
Leader/follower model
I will leave the details of these two models to the reader.

Part IV covers the "advanced topics" such as shared memory, the configuration framework, timers, and the naming service. Again, for each section an extensive example is given, which makes the topic easy to understand and to follow. The configuration framework is a very well covered section, as it is something that any of us can benefit from in our next design.


<< 1 >>

© 2004, ReviewFocus or its affiliates