FAQ
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

Search Discussions

  • Andrus Adamchik at Aug 27, 2011 at 2:16 pm
    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
  • Andrus Adamchik at Aug 27, 2011 at 2:20 pm
    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
  • Christian Grobmeier at Aug 28, 2011 at 8:25 pm
    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 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

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupdev @
categoriescayenne
postedAug 27, '11 at 1:42p
activeAug 28, '11 at 8:25p
posts4
users2
websitecayenne.apache.org

People

Translate

site design / logo © 2022 Grokbase