I don't really have time to read this whole discussion, but note that Grok's REST support uses ++rest++<protocolname> and then provides a rest layer (for that protocol) to the request. That sounds quite similar to what you are proposing for XMLRPC.
It's still ugly as POST and GET need to be handled by something else than PUT and DELETE, unfortunately; you can't use a different publisher (publication? whatever the name is for this handle) for GET and POST as the interface isn't set at the point it kicks in.
Regards,
Martijn
In SchoolTool we used to start another server for REST to have a different Publication for REST calls. As now I have started using Paste to start up schooltool, and paste does not support 2 Zope3 servers running on different ports using the same WSGI application (at least i don't know how to do that in paste.ini) I have opted for a brute force solution - URL based dispatch in the SchoolToolWSGIApplication code that switches between publications and request types before Zope3 has a chance to pick the wrong set. So instead of 2 servers for both applications now i have 1 WSGI server, and a weird kind of midleware that selects the right application (while both applications share the component registry and ZODB). I kind of like it that way, I could even give the freedom for the user to select the REST url prefix that he likes/wants to have, just like he could configure the port of the REST server. Ignas