I long ago accepted that any asynchronous framework supporting a language that wasn't meant to do that natively is going to demand that it's users write some strange code to make things work, perhaps duplicating processes that must be done sync or asynchronously as a consequence.
Since I came to AnyEvent after several years of happily and successfully using POE, I was comfortable with this idea.
I initially entertained the switch because I really wanted an async-friendly memcached library (which is, at this point, ironic, since in order to get one I had to write my own).
I ultimately chose to switch when I realized that through careful creation of wrappers and abstractions, I would be able to use the same code for network, LDAP, DBD::Pg and memcached throughout my application---the bits that were written to run in a high-performance async setting, and the bits that are just meant to be called from a Catalyst application.
Being able to refactor my application to reduce redundancy and increase consistency of behavior has been worth the learning curve, and I never could have done that with POE, because POE's demands that you conform your application to its structure are just too great.
I'm not saying AnyEvent necessarily makes this easy---it's a hard problem to solve---but it's doable.
6 out of 7 found this review helpful. Was this review helpful to you? Yes No
The most perlish distribution I've seen for a long time
3 out of 10 found this review helpful. Was this review helpful to you? Yes No
I'm using AnyEvent for around 2 years now. My modules Net::IRC3,
Net::XMPP2, AnyEvent::HTTPD (will soon be released) and Text::Edit
use it for their I/O events. It has been very stable for quite some
time now, and all bugs I occasionally found and reported have been fixed very quickly.
I also like that it doesn't enforce a framework upon me, like POE or
IO::Async would do. You just create some watchers for the events you
like, specify the callbacks and you are ready to go.
The documentation is a good reference and also comes with useful
examples. It's also very good that all quirks in the interface
are nicely documented. For example the exact behavior of C<wait>
I give 5 overall stars as it proved to be stable, is very easy
to use and I consider it a very good policy free alternative to
all other event frameworks.
12 out of 15 found this review helpful. Was this review helpful to you? Yes No
1 hidden unhelpful review