You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cayenne.apache.org by Christian Grobmeier <gr...@gmail.com> on 2011/08/27 15:41:49 UTC

[RT] Cayenne for other platforms

Hello,

this early morning I dreamed of Cayenne (not kidding). I think it is
possible to connect other languages speaking Hessian to Cayenne, for
example PHP. This morning I imagined how it should be done. Lets
assume we use PHP. Then we would "only" need a few classes, like
CayenneRuntime for ROP Clients. We would need to use Dataobjects which
can be translated to the Cayennebojects (they probably can be
generated from the original classes). Then we need to serialize them
and send em. This is for creating objects. I am a

A bit more difficult is to send queries to Cayenne. How could that be
done? The queries need to be serialized to a format Cayenne can use.

There are some other difficulties to be managed. Can serialized Java
objects be with the PHP Hessian lib and what happens with them? Are
they plain PHP objects? If it is not possible, other ways can apply,
for example using JSON as intermediate format. But is the
serialization effort really worth the value?

What are your thoughts on this? I think having Cayenne available for
PHP - this would be *wow*. Best of both worlds, so to say!

Cheers
Christian

Re: [RT] Cayenne for other platforms

Posted by Christian Grobmeier <gr...@gmail.com>.
I played around with:
http://hessianphp.sourceforge.net/index.php

I finally managed to send a "call" to cayenne, with auth. For this
test I used the cayenne-rop-server-tutorial.

After getting the proxy, i tried to call getEventManager() but it
fails with 500:
java.io.IOException: expected 'c' in hessian input at 72

But it should be the DataChannel I get, right?



On Sat, Aug 27, 2011 at 4:19 PM, Andrus Adamchik <an...@objectstyle.org> wrote:
> And we can also work towards the same goal from another direction - simplifying the protocol to make it easier to build "ad hoc" clients without sacrificing the features. We've thought of that before, just never got around doing it.
>
> Andrus
>
>
> On Aug 27, 2011, at 4:16 PM, Andrus Adamchik wrote:
>
>> First some background on ROP extensions. Tore did some experiments with Cocoa Cayenne [1], there was an old GSoC project exposing ROP server via SOAP [2], and then there was a recent Android success report (with the existing Java client).
>>
>> I suspect writing a meaningful client in another language is quite challenging. What ROP does at the high-level is providing a remote stub of the DataChannel [3], and a servlet session to allow connecting to the same server-side DataContext (or not... this can theoretically be made completely stateless on the server side). This appears deceptively simple. DataChannel has only 4 operations, (you can ignore 'getEventManager', so let's say - 3 operations), but the number of object types passed through these 3 methods, and the complexity of the data structures made it prohibitive so far.
>>
>> So to create a wow factor, you'd need a PHP version of ObjectContext that can manage object relationships and build the diffs for the 'onSync' operation, provide lazy faulting of relationships, etc.
>>
>> I think whoever does the PHP implementation can start small though - just implement DataChannel.onQuery and a subset of queries, say NamedQuery (this is the simplest one and also the most benign from the server security standpoint). And bring back DataRows instead of full objects. Even that can be pretty powerful, and cause enough interest to get the rest of ObjectContext going.
>>
>> Cheers,
>> Andrus
>>
>>
>> [1] https://cwiki.apache.org/CAY/cocoa-cayenne.html
>> [2] http://svn.apache.org/repos/asf/cayenne/soc/trunk/cayenne-ropwsdl/
>> [3] http://cayenne.apache.org/doc/api/org/apache/cayenne/DataChannel.html
>>
>>
>> On Aug 27, 2011, at 3:41 PM, Christian Grobmeier wrote:
>>
>>> Hello,
>>>
>>> this early morning I dreamed of Cayenne (not kidding). I think it is
>>> possible to connect other languages speaking Hessian to Cayenne, for
>>> example PHP. This morning I imagined how it should be done. Lets
>>> assume we use PHP. Then we would "only" need a few classes, like
>>> CayenneRuntime for ROP Clients. We would need to use Dataobjects which
>>> can be translated to the Cayennebojects (they probably can be
>>> generated from the original classes). Then we need to serialize them
>>> and send em. This is for creating objects. I am a
>>>
>>> A bit more difficult is to send queries to Cayenne. How could that be
>>> done? The queries need to be serialized to a format Cayenne can use.
>>>
>>> There are some other difficulties to be managed. Can serialized Java
>>> objects be with the PHP Hessian lib and what happens with them? Are
>>> they plain PHP objects? If it is not possible, other ways can apply,
>>> for example using JSON as intermediate format. But is the
>>> serialization effort really worth the value?
>>>
>>> What are your thoughts on this? I think having Cayenne available for
>>> PHP - this would be *wow*. Best of both worlds, so to say!
>>>
>>> Cheers
>>> Christian
>>>
>>
>>
>
>



-- 
http://www.grobmeier.de

Re: [RT] Cayenne for other platforms

Posted by Andrus Adamchik <an...@objectstyle.org>.
And we can also work towards the same goal from another direction - simplifying the protocol to make it easier to build "ad hoc" clients without sacrificing the features. We've thought of that before, just never got around doing it.

Andrus


On Aug 27, 2011, at 4:16 PM, Andrus Adamchik wrote:

> First some background on ROP extensions. Tore did some experiments with Cocoa Cayenne [1], there was an old GSoC project exposing ROP server via SOAP [2], and then there was a recent Android success report (with the existing Java client).
> 
> I suspect writing a meaningful client in another language is quite challenging. What ROP does at the high-level is providing a remote stub of the DataChannel [3], and a servlet session to allow connecting to the same server-side DataContext (or not... this can theoretically be made completely stateless on the server side). This appears deceptively simple. DataChannel has only 4 operations, (you can ignore 'getEventManager', so let's say - 3 operations), but the number of object types passed through these 3 methods, and the complexity of the data structures made it prohibitive so far.
> 
> So to create a wow factor, you'd need a PHP version of ObjectContext that can manage object relationships and build the diffs for the 'onSync' operation, provide lazy faulting of relationships, etc. 
> 
> I think whoever does the PHP implementation can start small though - just implement DataChannel.onQuery and a subset of queries, say NamedQuery (this is the simplest one and also the most benign from the server security standpoint). And bring back DataRows instead of full objects. Even that can be pretty powerful, and cause enough interest to get the rest of ObjectContext going.
> 
> Cheers,
> Andrus
> 
> 
> [1] https://cwiki.apache.org/CAY/cocoa-cayenne.html
> [2] http://svn.apache.org/repos/asf/cayenne/soc/trunk/cayenne-ropwsdl/
> [3] http://cayenne.apache.org/doc/api/org/apache/cayenne/DataChannel.html
> 
> 
> On Aug 27, 2011, at 3:41 PM, Christian Grobmeier wrote:
> 
>> Hello,
>> 
>> this early morning I dreamed of Cayenne (not kidding). I think it is
>> possible to connect other languages speaking Hessian to Cayenne, for
>> example PHP. This morning I imagined how it should be done. Lets
>> assume we use PHP. Then we would "only" need a few classes, like
>> CayenneRuntime for ROP Clients. We would need to use Dataobjects which
>> can be translated to the Cayennebojects (they probably can be
>> generated from the original classes). Then we need to serialize them
>> and send em. This is for creating objects. I am a
>> 
>> A bit more difficult is to send queries to Cayenne. How could that be
>> done? The queries need to be serialized to a format Cayenne can use.
>> 
>> There are some other difficulties to be managed. Can serialized Java
>> objects be with the PHP Hessian lib and what happens with them? Are
>> they plain PHP objects? If it is not possible, other ways can apply,
>> for example using JSON as intermediate format. But is the
>> serialization effort really worth the value?
>> 
>> What are your thoughts on this? I think having Cayenne available for
>> PHP - this would be *wow*. Best of both worlds, so to say!
>> 
>> Cheers
>> Christian
>> 
> 
> 


Re: [RT] Cayenne for other platforms

Posted by Andrus Adamchik <an...@objectstyle.org>.
First some background on ROP extensions. Tore did some experiments with Cocoa Cayenne [1], there was an old GSoC project exposing ROP server via SOAP [2], and then there was a recent Android success report (with the existing Java client).

I suspect writing a meaningful client in another language is quite challenging. What ROP does at the high-level is providing a remote stub of the DataChannel [3], and a servlet session to allow connecting to the same server-side DataContext (or not... this can theoretically be made completely stateless on the server side). This appears deceptively simple. DataChannel has only 4 operations, (you can ignore 'getEventManager', so let's say - 3 operations), but the number of object types passed through these 3 methods, and the complexity of the data structures made it prohibitive so far.

So to create a wow factor, you'd need a PHP version of ObjectContext that can manage object relationships and build the diffs for the 'onSync' operation, provide lazy faulting of relationships, etc. 

I think whoever does the PHP implementation can start small though - just implement DataChannel.onQuery and a subset of queries, say NamedQuery (this is the simplest one and also the most benign from the server security standpoint). And bring back DataRows instead of full objects. Even that can be pretty powerful, and cause enough interest to get the rest of ObjectContext going.

Cheers,
Andrus


[1] https://cwiki.apache.org/CAY/cocoa-cayenne.html
[2] http://svn.apache.org/repos/asf/cayenne/soc/trunk/cayenne-ropwsdl/
[3] http://cayenne.apache.org/doc/api/org/apache/cayenne/DataChannel.html


On Aug 27, 2011, at 3:41 PM, Christian Grobmeier wrote:

> Hello,
> 
> this early morning I dreamed of Cayenne (not kidding). I think it is
> possible to connect other languages speaking Hessian to Cayenne, for
> example PHP. This morning I imagined how it should be done. Lets
> assume we use PHP. Then we would "only" need a few classes, like
> CayenneRuntime for ROP Clients. We would need to use Dataobjects which
> can be translated to the Cayennebojects (they probably can be
> generated from the original classes). Then we need to serialize them
> and send em. This is for creating objects. I am a
> 
> A bit more difficult is to send queries to Cayenne. How could that be
> done? The queries need to be serialized to a format Cayenne can use.
> 
> There are some other difficulties to be managed. Can serialized Java
> objects be with the PHP Hessian lib and what happens with them? Are
> they plain PHP objects? If it is not possible, other ways can apply,
> for example using JSON as intermediate format. But is the
> serialization effort really worth the value?
> 
> What are your thoughts on this? I think having Cayenne available for
> PHP - this would be *wow*. Best of both worlds, so to say!
> 
> Cheers
> Christian
>