I have been looking at protobuf-net recently and protocol buffers and so far it seems quite impressive. What i am wondering about is the service side of things. If i have understood the google documentation right you can declare services in the .proto files. My questions are
- Is this service support implemented in protobuf-net or another dotnet protobuf lib?
- Is the service support fully cross language like protocol buffers them selves are?
- How hard is it to generate clients at the other end based on the declaration declared in the .proto file?
basically i am considering setting up so web or tcp based services using protobuf if possible to reduce overheads when processing high volumes and protobuf seems ideal as my clients are generally implement in a mix of languages such as python, java, c++ and dotnet. I really want something that would be easy for both them and myself to integrate into their application and since i plan to use protobuf internally it will hopefully be easy to integrate on my side.
[edit] Just some extra info code.google.com/apis/protocolbuffers/docs/proto.html#services That is the type of service i was talking about but i am not sure what langs really support it and what you really get from the declaration in the .proto file.
If you look at the Third Party Add Ons page you'll find lots of separate RPC implementations. However, I don't believe Google has released an RPC implementation, and I'm not sure there are any particularly "standardised" ones in the third party collection... you'd really need to pick an RPC mechanism you liked, and probably do a bit of work to implement it anywhere it doesn't already exist.
(Disclaimer: I work for Google and own the protobuf-csharp-port project. However, I'm not writing this "on behalf" of Google. It's just my personal opinion.)