Right. Here we are talking about a gRPC representation of the client server 
interactions. Not the data schema stored in ISPN. In that model, the API is 
compiled by us and handed over as a package. 

> On 29 May 2018, at 15:51, Sanne Grinovero <sa...@infinispan.org> wrote:
> 
> 
> 
>> On 29 May 2018 at 13:45, Vittorio Rigamonti <vriga...@redhat.com> wrote:
>> Thanks Adrian,
>> 
>> of course there's a marshalling work under the cover and that is reflected 
>> into the generated code (specially the accessor methods generated from the 
>> oneof clause).
>> 
>> My opinion is that on the client side this could be accepted, as long as the 
>> API are well defined and documented: application developer can build an 
>> adhoc decorator on the top if needed. The alternative to this is to develop 
>> a protostream equivalent for each supported language and it doesn't seem 
>> really feasible to me.
> 
> ​This might indeed be reasonable for some developers, some languages.
> 
> Just please make sure it's not the only option, as many other developers will 
> not expect to need a compiler at hand in various stages of the application 
> lifecycle.
> 
> For example when deploying a JPA model into an appserver, or just booting 
> Hibernate in JavaSE as well, there is a strong expectation that we'll be able 
> - at runtime - to inspect the listed Java POJOs via reflection and 
> automatically generate whatever Infinispan will need.
> 
> Perhaps a key differentiator is between invoking Infinispan APIs (RPC) vs 
> defining the object models and related CODECs for keys, values, streams and 
> query results? It might get a bit more fuzzy to differentiate them for custom 
> functions but I guess we can draw a line somewhere.
> 
> Thanks,
> Sanne
> 
>  
>> 
>> On the server side (java only) the situation is different: protobuf is 
>> optimized for streaming not for storing so probably a Protostream layer is 
>> needed.
>> 
>> On Mon, May 28, 2018 at 4:47 PM, Adrian Nistor <anis...@redhat.com> wrote:
>>> Hi Vittorio,
>>> thanks for exploring gRPC. It seems like a very elegant solution for 
>>> exposing services. I'll have a look at your PoC soon.
>>> 
>>> 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. 
>>> 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.
>>> 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.
>>> 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:)
>>> 
>>> Adrian
>>> 
>>> 
>>>> On 05/28/2018 04:15 PM, Vittorio Rigamonti wrote:
>>>> Hi Infinispan developers,
>>>> 
>>>> I'm working on a solution for developers who need to access Infinispan 
>>>> services  through different programming languages.
>>>> 
>>>> The focus is not on developing a full featured client, but rather discover 
>>>> the value and the limits of this approach.
>>>> 
>>>> - is it possible to automatically generate useful clients in different 
>>>> languages?
>>>> - can that clients interoperate on the same cache with the same data types?
>>>> 
>>>> 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.
>>>> 
>>>>  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.
>>>> 
>>>> Currently the project is nothing more than a poc with the following 
>>>> interesting features:
>>>> 
>>>> - client can be generated in all the grpc supported language: java, go, 
>>>> c++ examples are provided;
>>>> - the interface is full typed. No need for marshaller and clients build in 
>>>> different language can cooperate on the same cache;
>>>> 
>>>> The second item is my preferred one beacuse it frees the developer from 
>>>> data marshalling.
>>>> 
>>>> What do you think about?
>>>> Sounds interesting?
>>>> Can you see any flaw?
>>>> 
>>>> There's also a list of issues for the future [2], basically I would like 
>>>> to investigate these questions:
>>>> How far this architecture can go?
>>>> Topology, events, queries... how many of the Infinispan features can be 
>>>> fit in a grpc architecture?
>>>> 
>>>> Thank you
>>>> Vittorio
>>>> 
>>>> [1] https://github.com/rigazilla/ispn-grpc
>>>> [2] https://github.com/rigazilla/ispn-grpc/issues
>>>> 
>>>> -- 
>>>> VITTORIO RIGAMONTI
>>>> SENIOR SOFTWARE ENGINEER
>>>> Red Hat 
>>>> 
>>>> Milan, Italy
>>>> vriga...@redhat.com
>>>> 
>>>> irc: rigazilla 
>>>> 
>>>>  
>>>> 
>>>> 
>>>> _______________________________________________
>>>> infinispan-dev mailing list
>>>> infinispan-dev@lists.jboss.org
>>>> https://lists.jboss.org/mailman/listinfo/infinispan-dev
>>> 
>> 
>> 
>> 
>> -- 
>> VITTORIO RIGAMONTI
>> SENIOR SOFTWARE ENGINEER
>> Red Hat 
>> 
>> Milan, Italy
>> vriga...@redhat.com
>> 
>> irc: rigazilla 
>> 
>>  
>> 
>> _______________________________________________
>> infinispan-dev mailing list
>> infinispan-dev@lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/infinispan-dev
> 
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev
_______________________________________________
infinispan-dev mailing list
infinispan-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/infinispan-dev

Reply via email to