views:

467

answers:

3

The title says it!

I know that Jon Skeet was working on an implementation and I heard an interview (Dot net Rocks?) where he implied it was w.i.p.

The latest page just shows a version number. So, is it now production ready?

thanks

+1  A: 

Did you see this one protobuf-net on Google Code too?

Dirk Eddelbuettel
+5  A: 

There are two main implementations of Protocol Buffers:

  • Mine (mostly a port of the Java code)
  • Marc Gravell's ProtoBuf-Net (more WCF friendly, ground-up reimplementation)

I know Marc was in the middle of a major refactoring a little while ago; I don't know if he still is.

My own port works as far as I'm aware (bar a bug in packed type sizing which was reported a couple of days ago) but lacks some polish around the generation side of things. Some users are interested in Silverlight compatibility which I've been working towards but haven't tried yet. (Basically there are a few methods missing in Silverlight which I was using; I think I may have migrated all of them now - I need to check.)

I don't know whether either implementation is in production use for any systems, but I'll be happy to try to fix any bugs you raise. Note that I'm not intending to implement the "lite" PBs which appeared in the main 2.2 code; they would make the already-complicated inheritance nastier. I will be introducing an extra option to allow the mode (speed/size optimization) to be specified separately for C# soon.

Jon Skeet
Well that sounds good enough for me! I will download and have a play with it. I am investigating a nice fast, compact solution for a venerable CORBA implementation and so production quality is one of the most important features.
Fortyrunner
+2  A: 

Doh.... John Skeet beat me to it!

You need to look at the Other languages implementations page on the protobuf google code page...

There are 3 .net implementations.

dotnet-protobufs by Jon Skeets

protobuf-net by Marc Gravell

protosharp

The first one is a C# clone of the original protobuf which only supported C++, Java and Python.

The second has been greatly extended to fit in more with C# and can even be used in the place of the native remoting. I would use this if you are not doing cross platform work.

When I looked at the last one didn't see any good reason to use it over the first two.

Tony Lambert
Um, protobuf-net is Marc's one... did you mean to put protosharp last?
Jon Skeet
yes I fixed it....
Tony Lambert
Thanks for these links. They are all of interest to me, one of the main criteria is whether they are of production quality. I've ended up using libraries in the past that haven't been complete and regretted it. Of course what I should do is to offer to help finish them!
Fortyrunner