Posted on Monday 26 September 2005
FlashORB, a commercial Remoting implementation, has been overhauled and renamed WebOrb to cope with a new client: JavaScript. It appears that the gateway supports both AMF and an XML dialect which with the help of a JavaScript library can be used for Remoting-like functionality for AJAX. We’ve seen other AJAX-Remoting-like gateways but I believe this is the first time that we actually see both Flash and XML remoting combined into a single package. I think that this is a tremendously intelligent move by WebOrb that will further legitimize the use of Remoting, as this makes our data services future-proof (they always were future-proof, we just needed the gateway for it). I think this kind of functionality will make its way into AMFPHP 2, along with a standard AS2 library to handle caching, batching and other advanced Remoting functionality, and the complete elimination of the method table (applause!).
There are some stub open-source projects for Remoting implementations in .NET and Ruby in need of help. For .NET, Fluorine, a swf2exe program, includes a rather complete Remoting implementation, and isolating the Remoting part and making it work on IIS has apparently worked according to sources on osFlash. There has been some discussion on osFlash about starting an open-source project for .NET Remoting based on this implementation, which is under the LGPL; send an email on the list if you’re interested, I’m sure Aral will gladly create a project given enough people (there are already 3-4 people that have shown interest on the list, get together). For Ruby, there is the amf4r project which has been dead for more than a year and has not released any files yet, but which does have a working serializer and unserializer in CVS and a lot of the hard work done. I would suggest contacting the author if you have Ruby experience.
In an effort to help AMF-related projects get going, including red5, I have started documenting AMF at osFlash. I’ve been running tests with seldom-used flags such as Reference (0×07), MixedArray (0×08) and LongString (0×0C) and actually had to modify AMFPHP’s serializers and unserializers to fully support the glorious new AMF spec. You can get AMFPHP 1.0 MS3, implementing these changes, right here. This has been enlightening as the obscure parts are actually quite powerful. In particular pageable recordsets have often left out or badly implemented; OpenAMF’s implementation in particular is ridiculously buggy as it does not genereate unique recordset ids meaning as soon as you start another recordset it overwrites the previous one, in addition to NOT giving back the right records (they’re off by 1). Hopefully this will change. I will be filling the Remoting envelope section in following days and hopefully someone will step up for the local SharedObject envelope, LocalConnection and (one day) RTMP. Long live Remoting!


