[...]
> Probably due to my heavy background of assembly and C programmer, I first
> imagine that these 2 objects might interact via an object which is passed
> from the manager to the application object appropriate method to handle
> the request and returned to the manager object with some data inside.
[...]
> I know it would work, but I don't like it much because the manager has no
> need to write in the completion code, the application has no need to write
> in the request code, and the application programmer has no need to
> spend his time reading the documentation of the methods only used by the
> manager before finding the ones he needs.
> 
> Another way is to define a class for a request object and another for the
> answer, I'm not sure it can solve many things. Maybe another way is to
> change the architecture and envisage something very different. I just
> don't know and this is the reason why I need some help to make a clean
> project design.

I'm not design expert, but I would call a method on the application object
for every different request, and return/pass in parameters the needed data.

You can also do this, if manager and application are different processes,
using DRb.