[CalendarServer-dev] Hoping for a sanity check

Mark Cockfield mark.cockfield at gmail.com
Fri Sep 5 23:53:07 PDT 2008


Helge, Cyrus, Pascal,

I really appreciate the feedback.

The broad issue here seems to be that the RIA domain apparently has
relegated HTTP to basic content retrieval and is favoring protocols such as
AMF and JSON for data management. WebDAV does not seem to be on their radar.

At first I thought this was just a knee-jerk reaction by Adobe to some
nefarious activity that was conducted with version 7 of the Flash Player
allowing cross-site scripting...I believe that was the problem anyway. But
it seems that even Microsoft with Silverlight has reverted back from the
full HTTP vocabulary that was supported in the earlier versions to now
supporting only GET and POST as well. I'm not sure where OpenLaszlo is on
the matter, but both Microsoft and Adobe have been petitioned quite
vociferously for full HTTP support and both seem to be remaining steadfast
in their positions.

The two arguments I have come across are that many HTTP stacks don't support
the full vocabulary and that many firewalls block the extended methods.

So whether this is silly, I would almost go so far as to say inconceivable,
this is the current reality. And whether RIAs are going to be the wave of
the future remains to be seen; but the technology seems to be gathering
significant momentum and at the moment does provide the most pleasing
browser based user experience. Then there is the small matter of a recent
investment in the Flex development tools....

As it is quite obvious that the Calendar Server stands head-and-shoulders
above the other offerings, I am highly motivated to make this work!

Helge, Intriguing idea. Unfortunately the HTTP response header is also
unavailable (in Actionscript), they really seem to be insistent on their
designs for the use of HTTP.

Pascal and Cyrus, the proxy approach crossed my mind too. It seems to me the
two obvious approaches to an adapter are:

1. A process on the server that consumes the AMF request and then sends an
HTTP request to the Calendar Server. Since I don't have access to the
response header, I need the header and body in and out of the server to be
in the body of the message in and out of the Flex client.

2. PyAMF's Twisted Gateway which appears to have been developed to address
this issue. This would result in a variation on POST Tunneling, as I
understand it, but the adapter would be natively plugged into the Calendar
Server's Twisted architecture. Which to my thinking is the less complicated
approach, but does require exposing the Calendar Service as a remote object
to be called. Which if my understanding is correct is basically what happens
when the HTTP request hits the server and the callable site object is
invoked.

Well, as nobody has indicated I am out of my mind, I am going to explore
this a bit further.

Cyrus, if this does prove to be a viable approach, is it something you would
be interested in?

Thanks again for the feedback,

Mark

On 9/5/08 9:39 AM, "Cyrus Daboo" <cdaboo at apple.com> wrote:

> Hi Mark,
> 
> --On September 4, 2008 5:34:20 PM -0400 Mark Cockfield
> <mark.cockfield at gmail.com> wrote:
> 
>> I am developing an RIA in Flex which needs to be built upon a calendaring
>> foundation. After discovering that the CalendarServer is the Holy Grail I
>> have not only found my foundation, but a good part of my infrastructure as
>> well. Really nice work!
> 
> A little Google'ing indicates that the RIA in Flex seems very limited.
> 
>> Now imagine my disappointment upon realizing that Actionscript has been
>> apparently locked down to only allow GET and POST http methods.
> 
> Apparently you can do a little more than that with their proxy service:
> 
> <http://livedocs.adobe.com/flex/2/langref/mx/rpc/http/HTTPService.html>
> 
> However, you really need to be able to do PROPFIND (and possibly PROPPATCH)
> and REPORT to work well with CalDAV, so that probably doesn't help.
> 
>> After considerable thrashing about I seem to be faced with the following
>> two options:
>> 
>> 1. Code my own HTTP client in Actionscript at the socket level.
>> 
>> 2. Use PyAMF and the Twisted Gateway to hook a Remote Messaging interface
>> into the Calendar Service.
> 
> Helge's suggestion of using X-HTTP-Method-Override is probably your best
> choice. I am not sure whether we could support such an option. It probably
> wouldn't be that big a change. The alternative is to use a proxy that
> understands that header and turns the request into the "real" one as it
> passes through to the real server.
> 
> I would strongly urge you to file a ticket against RIA/Flex asking for
> arbitrary HTTP method support. It seems silly not to provide that when
> workarounds such as X-HTTP-Method-Override, and more importantly when more
> web services are using "richer" WebDAV protocol elements.



More information about the calendarserver-dev mailing list