Very nice, thanks for the overview. Let me post that on Cayenne twitter :)

> On May 20, 2016, at 6:48 AM, Aristedes Maniatis <[email protected]> wrote:
> 
> I've realised that Savva and I have been having too much conversation around 
> this in private and it should be brought back to the list. Here is a summary 
> of the great work happening behind the scenes to modernise Cayenne's ROP 
> implementation.
> 
> First, let's remember the problems we were having:
> 
> 1. Hessian (the serialisation tool) hasn't had much love for many years. It 
> has bugs. In particular it fails to serialise BigDecimal and Java8 date 
> objects.
> 
> 2. The ROP implementation is completely tied into Hessian, and not just for 
> serialisation. It also uses Hessian for the servlet implementation and 
> endpoint declarations.
> 
> 3. This meant it was hard to add HTTP/2, compression and other things.
> 
> 
> So Dima spent time this past January on pulling apart the Cayenne 
> implementation and putting it back together again in a pluggable way. Now we 
> can implement different serialisers and different HTTP libraries. That work 
> landed in 4.0M3.
> 
> Next Savva has been working on protocol-buffers, which is a Google led 
> serialisation library under the Apache license. It is more modern than 
> Hessian and actively developed. It is less likely to have security issues 
> with lots of people looking at it. It scales really well and is fast.
> 
> But protocol-buffers isn't enough, since that library doesn't know how to 
> take an arbitrary graph of objects and serialise them with their 
> relationships. Another library protostuff sits on top and does that for us. 
> It is also well used and actively developed.
> 
> So now we have an almost working Cayenne extension library. Instead of 
> Hessian, you can drop this library into your project and have it use 
> protostuff which uses protocol-buffers. But bug remains in protostuff and one 
> of the authors there has been incredibly helpful in sorting it out. Hopefully 
> a bit of tweaking and testing, and that will be resolved.
> 
> The problem and conversation can be seen in these threads. The protostuff 
> people are very helpful.
> 
> https://github.com/protostuff/protostuff/issues/176
> https://github.com/protostuff/protostuff/pull/177
> https://github.com/protostuff/protostuff/pull/180
> 
> Now it needs more testing.
> 
> 
> 
> In addition, HTTP/2 is complicated with something called ALPN which is all 
> about negotiating the right kind of link. Savva has some example code here: 
> https://github.com/thinline72/rpc-example  which demonstrates gluing together 
> Spring remote, Jetty HTTP/2 and protostuff.
> 
> 
> In the end, we'll have:
> 
> * better security (not Hessian)
> * faster serialisation (protocol-buffers)
> * less network traffic (HTTP/2)
> * easier implementation of compression and other filters (pluggable modules)
> * simpler to set up
> 
> 
> It will be really nice and I look forward to Savva landing this into Cayenne.
> 
> Ari
> 
> 
> 
> 
> -- 
> -------------------------->
> Aristedes Maniatis
> CEO, ish
> https://www.ish.com.au
> GPG fingerprint CBFB 84B4 738D 4E87 5E5C  5EFA EF6A 7D2E 3E49 102A
> 

Reply via email to