LICS services is certainly worth investigating as an alternative, it seems well thought out and driven by a good understanding of the problems at hand.
However, I don't see how it decouples the module using a service any farther than pipes has the potential to do.
The module using the service must share an interface with the service. That is the currently understood alternative to pipes; modules have their dependencies on each other (or shared actors) injected based on interfaces rather than classes.
Using pipes, you share a message protocol with your dependency. A message name of FETCH_USER sent down the pipe to the attached module for user services may result in a FETCH_USER_ERROR or FETCH_USER_SUCCESS message showing up later. Multiple modules can be connected via pipes to the service module.
Pipes is a tool for intercore communication. The biggest pain is configuration and plumbing (items which have been obviated with Imajn:
http://imajn.net), but it also has quite a bit of functionality in terms of message filtering and queuing.
LICS seems like it would be mostly useful in passing around references to idempotent / stateless utilities (such as the example given of a currency converter. But a Proxy used for remote services often has its own state. It can be in the process of making a request and shouldn't be interrupted with another request until it is complete. This sort of thing can be handled with a queue in the pipeline using pipes, but would need to be handled inside the Proxy otherwise.
BTW, I tried the LICS demo here:
http://www.dz015.com/apps/lics_demo/Shell.htmlIt took quite a while to come up. I'm assume this must have to do with Flex 4; I can't imagine how this simple demo program could take so long to load when Pipeworks comes up almost instantly. I clicked the 'Load Module B' button, and it went grey and 'Unload Module B' became enabled. Then I saw a 'Logger Started Up' box. I clicked 'Unload Module B' and got:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at shell.view::ShellMediator/unloadModule()
at shell.view::ShellMediator/onUnloadModuleBButtonClicked()
-=Cliff>