what are the key advantages of PureMVC over Robotlegs?
I would have to say simplicity and portability. And I'm talking about PureMVC vs DI in general here, not just RobotLegs.
SimplicityMany pieces, loosely coupled is a mantra that guides OOP design, but loosely coupled without pattern can make working on an app that uses dependency injection difficult.
If anything can have any other thing injected into it, then multiple dependencies form on the thing itself. You've freed the object getting the thing from having to know how to get it, but you've still formed a dependency on it. If five objects inject a particular thing, then refactoring that thing becomes increasingly difficult.
PureMVC is more focused on message passing and formalizing the collaborators based on a few simple patterns. It's simple, but it's enough to do pretty much any size application you want to attempt with it. All those programs will look very similar because they use the same patterns.
DI doesn't exactly encourage pattern use. I'm not saying it discourages it, but I will say that developers, particularly good ones, are a lazy lot. We figure out the path of least resistance like Yoda feeling the Force. And since you can just inject something anywhere, you are not encouraged to consider the collaborations you form on the spot while fixing some problem or trying to demo or die. But now there is a coupling. If you're wise and inject Interfaces, you'll save yourself a lot of work, but i digress. DI is championed, IMHO, mostly by cowboy coders who feel penned-in by a framework that is prescriptive. [
I can feel the flamethrowers lighting up on that one.] But I get that. I rode those dusty plains for years. But your work is amplified if you're contributing to a team in a concerted effort that doesn't involve a lot of head-scratching about other people's code. If everybody is confused about some part of the thing, then that's mental friction that manifests as technical debt.
PortabilityCheck the code repositories. There are a lot of versions of PureMVC out there. They're not all as well supported as AS3 (primarily because I lived and breathed AS3 - and still do, mostly) and the time to coordinate on all those fronts. But the point is really that the idea itself is so simple and the actors and their collaborations and responsibilities are QED to build in practically any OOP language. Most of those ports were done in a weekend. It is easily ported because it uses the simplest features of the language for everything.
And because the scope of the framework itself was predetermined, you don't really have to worry if it's going to change and there'll be a whole new way of doing things. A program in PureMVC from 2006 looks pretty much the same as one you'd write today.