Hi Sagara, KasunG, As part of the R&D work, we tried couple of 3rd party RPC Implementation libraries with ProtoBuf.
We got our own sample services working. protobuf-rpc-pro[1] is a best one in terms of features. Notable features are, - TCP connection keep-alive. - Bi-directional RPC calls from client to server and server to client. - SSL socket layer encryption option. - Data Compression option. - RPC call cancellation. - RPC call timeout. - Out-of-Band RPC server replies to client. - Non RPC Protocol Buffer messaging for peer to peer communication. - Protocol Buffer wire protocol. - Semantics for calls handling on TCP connection closure. - Pluggable logging facility. - Author is very active (His last commit was the day before yesterday) - It is available in maven repo. You can find an architecture diagram of this library here[2] However, we are going to demonstrate 3 different sample client-sever applications implemented using 3 different libraries. We will demonstrate you that, using protobuf-rpc-pro library[1], - Multiple services can be exposed at a single server port - Multiple clients can access them simultaneously We would like to have a meeting as early as possible today. If we are okay with this library, we can go ahead and discuss about architecture. 1. https://code.google.com/p/protobuf-rpc-pro/ 2. https://code.google.com/p/protobuf-rpc-pro/wiki/ComponentArchitecture Thanks. On Thu, May 22, 2014 at 12:44 PM, Denuwanthi De Silva <[email protected]>wrote: > Hi, > > Yes, it supports TCP. > We are currently working on developing a sample with multiple services. > > Thanks & Regards, > Denuwanthi. > > > > On Thu, May 22, 2014 at 12:21 PM, Sagara Gunathunga <[email protected]>wrote: > >> >> >> >> On Thu, May 22, 2014 at 11:50 AM, Kasun Gajasinghe <[email protected]>wrote: >> >>> Hi Rajkumar, >>> >>> These implementations looks interesting. It's better if we can adapt a >>> framework like this. >>> >>> Thrift has a built-in RPC framework, but the issue there was the need to >>> have one network port per service. So, make sure the library you are going >>> to use do not have this type of issues. It might be better if you could >>> look into the internals of the chosen RPC framework to better understand >>> the architecture. >>> >>> The MIT license is compatible with ASL 2.0. But GPL is not. So, RCFProto >>> is out of the picture. >>> >>> Thanks, >>> KasunG >>> >>> >>> On Thu, May 22, 2014 at 11:14 AM, Rajkumar Rajaratnam < >>> [email protected]> wrote: >>> >>>> Hi, >>>> >>>> We just went through Protocol Buffers yesterday and got to know some >>>> more information. >>>> >>>> We can define 'RPC Service Interface' in a .proto file and the protocol >>>> buffer compiler will generate service interface code and stubs in your >>>> chosen language. >>>> >>>> The stub forwards all calls to an RpcChannel, which in turn is an >>>> abstract interface that you must define yourself in terms of your own RPC >>>> system. For example, you might implement an RpcChannel which >>>> serializes the message and sends it to a server via HTTP[1]. >>>> >>>> Hence, we can define our own RpcChannel. >>>> >>>> But, there are number of third party project with specific RPC >>>> implementations. Some of Java implementations are, >>>> >>>> >>>> - protobuf-socket-rpc [2] >>>> >>>> Java and Python protobuf rpc implementation using tcp/ip sockets >>>> MIT License >>>> >>>> - cxf-protobuf [3] >>>> >>>> Integrate Google's Protocol Buffers and Apache CXF >>>> Apache License 2.0 >>>> >>>> - protobuf-rpc-pro [4] >>>> >>>> A java ProtocolBuffers RPC implementation featuring bidirectional >>>> calls. >>>> Apache License 2.0 >>>> >>>> It seems this has nice TCP handling capabilities ? do you guys have >> any working sample ? >> >> BTW we need to ensure whether it can listen on one port and accept >> requests from multiple services. >> >> Thanks ! >> >> >> >>> >>>> - >>>> - RCFProto [5] >>>> >>>> RPC implementation for Google Protocol Buffers, based on the RCF >>>> networking library >>>> >>>> GPL v2, for open source usage. >>>> Commercial license, for closed source usage. >>>> >>>> WDYT about using these 3rd party libraries? If we can use these, we can >>>> look into details. >>>> >>>> 1. https://developers.google.com/protocol-buffers/docs/proto#services >>>> >>>> 2. https://code.google.com/p/protobuf-socket-rpc/ >>>> >>>> 3. https://code.google.com/p/cxf-protobuf/ >>>> >>>> 4. https://code.google.com/p/protobuf-rpc-pro/ >>>> >>>> 5. http://www.deltavsoft.com/RCFProto.html >>>> >>>> >>>> Thanks. >>>> >>>> -- >>>> Rajkumar Rajaratnam >>>> Software Engineer | WSO2, Inc. >>>> Mobile +94777568639 | +94783498120 >>>> >>> >>> >>> >>> -- >>> >>> *Kasun Gajasinghe*Senior Software Engineer, WSO2 Inc. >>> email: kasung AT spamfree wso2.com >>> linked-in: http://lk.linkedin.com/in/gajasinghe >>> blog: http://kasunbg.org >>> >>> >>> >> >> >> >> -- >> Sagara Gunathunga >> >> Senior Technical Lead; WSO2, Inc.; http://wso2.com >> V.P Apache Web Services; http://ws.apache.org/ >> Linkedin; http://www.linkedin.com/in/ssagara >> Blog ; http://ssagara.blogspot.com >> >> > > > -- > Denuwanthi De Silva > Software Engineer; > WSO2 Inc.; http://wso2.com, > Email: [email protected] > > > -- Rajkumar Rajaratnam Software Engineer | WSO2, Inc. Mobile +94777568639 | +94783498120
_______________________________________________ Architecture mailing list [email protected] https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
