XMLRPC Logo XMLRPC Framework

A framework implementing XML-RPC in Objective-C.
 
  Abstract
  Mulle XMLRPC is a client/server implementation of the XML-RPC specification. In short, XML-RPC is a protocol for doing remote procedure calls on top of XML via HTTP. As such, XML-RPC does not depend on a specific programming language and in fact there are a lot of implementations for different languages. This implementation is written in Objective-C and fills that gap.

The Mulle XMLRPC framework consists of a bunch of classes involved in managing the protocol aspects such as XML parsing/creating and transporting. As a user of the framework, you usually get in touch with a few classes and two Objective-C protocols only.
Although the framework itself provides enough abstraction to make several things like the transport layer exchangeable, most of its classes make use of objects/categories from EDCommon and EDMessage frameworks.
 
  What you get ...
  Before going into too much detail now, let's make clear who it is this framework is made for.
  • If you want to implement XML-RPC (client or server) in Objective-C, sure here you are.
  • If you're just looking for a cool, scalable server - again, here you are. Mulle XMLRPC implements several extensions (multicall, introspection) that most other servers do not have. Also, there are hooks (and documentation) for integrating Mulle XMLRPC into WebObjects, a highly scalable Application server.
  • If you have a "legacy" app and want to replace/extend NSConnections with a similar but also language neutral interface. Here you go. By the way, that's my initial reason for writing this framework. Mulle XMLRPC's XRConnection class provides a very easy way to form "reliable" connections which are able to tell that the remote end has gone away. The whole interface of XRConnection is compatible with NSConnection and can be used as a drop in replacement.
The Mulle XMLRPC framework comes with documentation and example code to clarify the usage of the framework. Also, a somewhat clumsy unit testing subproject is integrated into the project. Make sure to read the documentation and also the TODO list.
 
  News
 
06/30/2003 Just realized that the last update to these pages was quite some time ago. In the meantime, the XML-RPC framework got several bugfixes and minor changes, but nothing serious.
06/08/2002 I've commited a new version to the CVS repository. The new version implements method polymorphism and automatic type checking. I further corrected a bug where empty strings could be interpreted as *nil* values by a Mulle XMLRPC server.
04/14/2002 In order to get in touch with the developer base, I've set up a mailing list. If you're interested in general discussion, future development or bug reports, send an email to xmlrpc-dev-subscribe@mulle-kybernetik.com.
04/14/2002I've ported all of these projects to GNUstep lateley, making this framework no longer a Mac OS X solution only. I've built all frameworks with gcc 3.0.4 and tested it on FreeBSD 4.5-STABLE and on Linux 2.4.x (SUSE).
 
  Availability
  The sourcecode to XMLRPC is available via CVS only. Although considered to be stable now, there are currently no specific releases of the XMLRPC framework at present. Mulle XMLRPC does have a developer base now, so there's probably need for specific releases in the near future

Please note that in order to compile the source code, you also need to get the latest copies of the EDCommon and EDInternet frameworks. At the time of this writing, EDCommon v32 and EDMessage v16 were ok.

IMPORTANT: Because we use wrappers in our projects, you may need to install a special version of CVS on your machine in order to check out our projects correctly. Make sure you read our CVS pages which explain all steps necessary.

So, in order to check out the project, do the following:
% cd <your-favourite-source-directory>
% cvs -z3 -d :pserver:anoncvs@cvs.mulle-kybernetik.com:/cvsroot login
(Logging in to anoncvs@cvs.mulle-kybernetik.com)
CVS password: anoncvs
% cvs -z3 -d :pserver:anoncvs@cvs.mulle-kybernetik.com:/cvsroot co ed/EDCommon
cvs server: Updating ed/EDCommon
...
% cvs -z3 -d :pserver:anoncvs@cvs.mulle-kybernetik.com:/cvsroot co ed/EDMessage
cvs server: Updating ed/EDMessage
...
% cvs -z3 -d :pserver:anoncvs@cvs.mulle-kybernetik.com:/cvsroot co znek/XMLRPC
cvs server: Updating znek/XMLRPC
...
Then you'll have to build EDCommon, EDMessage and XMLRPC in that order.

PROBLEMS: If you have trouble building any of the above projects, make sure you read our techinfo on a bug in PBX and how to circumvent that bug.

 
 Mailing lists
 There's a mailinglist now which is open for discussion, announcements and what not circled around Mulle XMLRPC. The mailing list's address is xmlrpc-dev@mulle-kybernetik.com. Subscriptions go to xmlrpc-dev-subscribe@mulle-kybernetik.com. Help regarding the list management can be found at xmlrpc-dev-help@mulle-kybernetik.com.
 
  License
  Permission to use, copy, modify and distribute this software and its documentation is hereby granted under the terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software Foundation, provided that both the copyright notice and this permission notice appear in all copies of the software, derivative works or modified versions, and any portions thereof, and that both notices appear in supporting documentation, and that credit is given to Marcus Müller in all documents and publicity pertaining to direct or indirect use of this code or its derivatives.
 
  Credits
  Thanks must go to Erik Dörnenburg <erik@mulle-kybernetik.com> for contributing his excellent EDCommon and EDMessage frameworks to the public domain. Also, Erik's just a cool guy! And also, many thanks go to Helge Hess <helge@skyrix.com> for also being a cool guy ;-) and for having nice ideas - and especially for letting me know that such a thing as the XML-RPC protocol exists - it's really been a great time saver.
 
  Some project details
  This framework was written by Marcus Müller <znek@mulle-kybernetik.com>, so make sure all your fanmail and other useful junk goes there ;-)

The initial version took 2 1/2 days to complete and was roughly 90% of what you see now. The remaining 10% took about 1 week to implement. In the meantime Mulle XMLRPC got integrated into another Mulle project dubbed "BigBrother" which provided a good basis for refining the API in the places where it wasn't as good as I thought in the first place.

There's still some space for improvements, especially in the coder objects. These offer some interesting opportunities as can be read in the TODO file included in the project source.