Here is my response so far. It's meager given the accusations but I'm very busy. Comments are much appreciated:
- PureMVC is data-driven > I don't agree. MVC came out of Smalltalk; about as object oriented as a programming language was ever designed to be non-data-driven. MVC decouples the view from the model. I think you are confusing data brokering with MVC. Data brokering decouples the business objects from their possible data sources. We use WebORB and nHibernate to manage this side of the decoupling problem.
- Poor Domain Model > Again I disagree. I see nothing in the framework that enforces the use of VOs for all business objects. We use VO's for hydrating BOs and then based on security and client side performance issues we decide just how much more behavior we deploy to the client's well-formed BOs. Sometimes a VO is all that needed and then I'd agree that the application is somewhat data-driven. Although you can push all the domain logic of a BO into simple and complex Commands, you don't have to. We do and don't based on a balance between decoupling and encapsulation.
PureMVC has to admit to the complexity of web applications and therefore puts objects into the framework like the VO that can cause one to see it as data driven. I see the framework as data agnostic. After reading and re-reading the Best Practices, I modify the framework to meet my data brokering needs. If you look at the WebORB codegen of PureMVC AS code you will see their bias, but since they give you access to the XSLT you don't have to live with that bias.
- PureMVC is centralistic > I'm not sure what you mean by this. I'll just need you to be more specific. In case you are talking about deploying the Flex through a browser or as an Adobe Air app, we see no reason to believe that PureMVC would cause a problem here.
- Out[side] of AS/Flex [event model] > I've seen a lot of bad object oriented code, but some of the worst has been written in Flex/AS right here in my company. This code bound the UI so tightly to the business objects that we had to abandon the code once we tried to expand it for a similar flex-editable product. Had that programmer worked within the PureMVC framework he may have had a fighting chance to see how to decouple the UI from the business objects. One of the things I like most about PureMVC is how richly and rigorously it deals with events. I'd suggest that you read page 13 of the PureMVC Best Practices or read this post by the author of PureMVC
http://forums.puremvc.org/index.php?topic=60.0.
PureMVC, like WebORB is a powerful framework. It deserves a much hard look that you've obviously given it. Please read the Best Practices document. I'll be happy to give you a Flex/AS code base that uses the PureMVC, WebORB, nHibernate and nUnit. Please review this code and tell me how you think it could be improved by discarding PureMVC.
Thanks.
-- Mike