<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">Hi Vittorio,<br>
thanks for exploring gRPC. It seems like a very elegant solution
for exposing services. I'll have a look at your PoC soon.<br>
<br>
I feel there are some remarks that need to be made regarding gRPC.
gRPC is just some nice cheesy topping on top of protobuf. Google's
implementation of protobuf, to be more precise. <br>
It does not need handwritten marshallers, but the 'No need for
marshaller' does not accurately describe it. Marshallers are
needed and are generated under the cover by the library and so are
the data objects and you are unfortunately forced to use them.
That's both the good news and the bad news:) The whole thing looks
very promising and friendly for many uses cases, especially for
demos and PoCs :))). Nobody wants to write those marshallers. But
it starts to become a nuisance if you want to use your own data
objects.<br>
There is also the ugliness and excessive memory footprint of the
generated code, which is the reason Infinispan did not adopt the
protobuf-java library although it did adopt protobuf as an
encoding format.<br>
The Protostream library was created as an alternative
implementation to solve the aforementioned problems with the
generated code. It solves this by letting the user provide their
own data objects. And for the marshallers it gives you two
options: a) write the marshaller yourself (hated), b) annotated
your data objects and the marshaller gets generated (loved).
Protostream does not currently support service definitions right
now but this is something I started to investigate recently after
Galder asked me if I think it's doable. I think I'll only find out
after I do it:)<br>
<br>
Adrian<br>
<br>
On 05/28/2018 04:15 PM, Vittorio Rigamonti wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CADE_1G_KgnYyh94_g-DBJFrEWc1m49J3K3nYU6rRfGjuPoHcUw@mail.gmail.com">
<div dir="ltr">
<div>Hi Infinispan developers,<br>
<br>
</div>
<div>I'm working on a solution for developers who need to access
Infinispan services through different programming languages.<br>
</div>
<div><br>
The focus is not on developing a full featured client, but
rather discover the value and the limits of this approach.<br>
<div><br>
</div>
</div>
<div>- is it possible to automatically generate useful clients
in different languages?<br>
</div>
<div>- can that clients interoperate on the same cache with the
same data types?<br>
</div>
<div><br>
</div>
<span id="m_-8148977098275501500gmail-result_box"
class="m_-8148977098275501500gmail-" lang="en"><span
class="m_-8148977098275501500gmail-">I came out with a small
prototype that I would like to submit to you and on which I
would like to gather your impressions.</span></span><br>
<div><br>
You can found the project here [1]: is a gRPC-based
client/server architecture for Infinispan based on and
EmbeddedCache, with very few features exposed atm.<br>
</div>
<div><br>
Currently the project is nothing more than a poc with the
following interesting features:<br>
<br>
</div>
<div>- client can be generated in all the grpc supported
language: java, go, c++ examples are provided;<br>
</div>
<div>- the interface is full typed. No need for marshaller and
clients build in different language can cooperate on the same
cache;<br>
</div>
<div><br>
</div>
<div>The second item is my preferred one beacuse it frees the
developer from data marshalling.<br>
<br>
</div>
<div>What do you think about?<br>
</div>
<div>Sounds interesting?<br>
</div>
<div>Can you see any flaw?<br>
</div>
<div><br>
There's also a list of issues for the future [2], basically I
would like to investigate these questions:<br>
How far this architecture can go?<br>
Topology, events, queries... how many of the Infinispan
features can be fit in a grpc architecture?<br>
</div>
<div><br>
</div>
<div>Thank you<br>
</div>
<div>Vittorio<br>
</div>
<br>
[1] <a href="https://github.com/rigazilla/ispn-grpc"
target="_blank" moz-do-not-send="true">https://github.com/rigazilla/<wbr>ispn-grpc</a><br
clear="all">
<div>
<div>
<div>[2] <a
href="https://github.com/rigazilla/ispn-grpc/issues"
target="_blank" moz-do-not-send="true">https://github.com/rigazilla/<wbr>ispn-grpc/issues</a><br
clear="all">
<br>
</div>
<div>-- <br>
<div
class="m_-8148977098275501500gmail-m_-8431198291286624134m_1982721755148179188gmail_signature">
<div dir="ltr">
<div>
<div dir="ltr">
<p
style="font-weight:bold;margin:0px;padding:0px;font-size:14px;text-transform:uppercase"><span>Vittorio</span>
<span>Rigamonti</span></p>
<p
style="font-weight:normal;font-size:10px;margin:0px
0px 4px;text-transform:uppercase"><span>Senior
Software Engineer</span></p>
<p
style="font-weight:normal;margin:0px;font-size:10px;color:rgb(153,153,153)"><a
style="color:rgb(0,136,206);font-size:10px;margin:0px;text-decoration:none;font-family:"overpass",sans-serif"
href="https://www.redhat.com" target="_blank"
moz-do-not-send="true">Red Hat <span><br>
<br>
</span></a></p>
<span
style="font-size:10px;margin:0px;color:rgb(153,153,153)">
<p style="font-size:10px;margin:0px">Milan,
Italy</p>
</span>
<p style="font-weight:normal;margin:0px 0px
6px;font-size:10px;color:rgb(153,153,153)"><span
style="margin:0px;padding:0px">
<a
style="color:rgb(0,136,206);font-size:10px;margin:0px;text-decoration:none;font-family:"overpass",sans-serif"
href="mailto:vrigamon@redhat.com"
target="_blank" moz-do-not-send="true">vrigamon@redhat.com</a><br>
</span></p>
<p style="font-weight:normal;margin:0px 0px
6px;font-size:10px;color:rgb(153,153,153)"><span
style="margin:0px;padding:0px">irc: rigazilla </span>
</p>
<a href="https://red.ht/sig" target="_blank"
moz-do-not-send="true"> <img
src="https://www.redhat.com/profiles/rh/themes/redhatdotcom/img/logo-red-hat-black.png"
moz-do-not-send="true" height="auto"
width="90"></a></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!--'"--><br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
infinispan-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:infinispan-dev@lists.jboss.org">infinispan-dev@lists.jboss.org</a>
<a class="moz-txt-link-freetext" href="https://lists.jboss.org/mailman/listinfo/infinispan-dev">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a></pre>
</blockquote>
<p><br>
</p>
</body>
</html>