Re performance; protobuf-net is designed to perform that reflection as little as possible, creating efficient data access code after that. In v2, it takes this much further in many ways - using much lower-level meta-programming, and if you want it (entirely optional), pre-generation of a standalone serializer dll - so at runtime the reflection cost is somewhere between minimal (if using runtime meta-programming) to nil (if using pre-generation) Re release; "when it is ready"; life is crazy hectic, but an alpha dll is available for both full . NET and iPhone (this latter will probably work on most of the lighter runtimes, since iPhone is the most restrictive).
Ultimately, reality is that (as unsponsored, etc) it is going to lag a bit behind things like work and family - I try to find time when I can, though I think a more sensible comparison is the goals protobuf-net is designed to be easily fitted onto your existing DTO or domain model, without significant rework - or for use in a code-first scenario. It also supports generation from . Proto, but that isn't the primary goal (but is of course hugely desirable).
It also sports a very different API, geared around common . NET metaphors, rather than common protobuf metaphors Or to put it another way: protobuf-csharp-port focuses on protobuf, and adds C# / . NET to the existing protobuf landscape protobuf-net focuses on C# / .
NET, and adds protobuf to the existing C# / . NET landscape A subtle distinction, maybe - and indeed either would make a worthy serialization API for . NET As a corollary, if your primary aim is interop between heterogeneous environments that you actively work on in the same team - then maybe protobuf-csharp-port is a better match for you I'm also a bit... "loose" with protobuf, so I have no (well, minimal) guilt going a little bit beyond the standard spec (while staying inside the protocol definition) to shoehorn in inheritance, full-graphs, etc - which are common in the .
NET ecosystem but have no direct map in protobuf. And of course I can look more at tools like WCF (and to a lesser degree: remoting).
Re performance; protobuf-net is designed to perform that reflection as little as possible, creating efficient data access code after that. In v2, it takes this much further in many ways - using much lower-level meta-programming, and if you want it (entirely optional), pre-generation of a standalone serializer dll - so at runtime the reflection cost is somewhere between minimal (if using runtime meta-programming) to nil (if using pre-generation). Re release; "when it is ready"; life is crazy hectic, but an alpha dll is available for both full .
NET and iPhone (this latter will probably work on most of the lighter runtimes, since iPhone is the most restrictive). Ultimately, reality is that (as unsponsored, etc) it is going to lag a bit behind things like work and family - I try to find time when I can, though. I think a more sensible comparison is the goals; protobuf-net is designed to be easily fitted onto your existing DTO or domain model, without significant rework - or for use in a code-first scenario.It also supports generation from .
Proto, but that isn't the primary goal (but is of course hugely desirable). It also sports a very different API, geared around common . NET metaphors, rather than common protobuf metaphors.
Or to put it another way: protobuf-csharp-port focuses on protobuf, and adds C# / . NET to the existing protobuf landscape protobuf-net focuses on C# / . NET, and adds protobuf to the existing C# / .
NET landscape A subtle distinction, maybe - and indeed either would make a worthy serialization API for .NET. As a corollary, if your primary aim is interop between heterogeneous environments that you actively work on in the same team - then maybe protobuf-csharp-port is a better match for you. I'm also a bit... "loose" with protobuf, so I have no (well, minimal) guilt going a little bit beyond the standard spec (while staying inside the protocol definition) to shoehorn in inheritance, full-graphs, etc - which are common in the .
NET ecosystem but have no direct map in protobuf. And of course I can look more at tools like WCF (and to a lesser degree: remoting).
WOW! Thank you for this detailed answer (as always - regarding the last 50 posts I read about protobuf-net). As I said, I know the philosophy of both projects and in fact, the scenario I want to use one of both is to integrate a Silverlight client into an existing protobuf landscape: .
Proto first --> java (client+server incl. Xml/json formatter), c#,... However, I could live with both libs (current version). But what I am really interested in is a performance comparison - even if it's just about a few ms.Am I right, that protobuf-csharp-port (theoretically) cannot be slower than protobuf-net?
– Stephan Apr 19 at 21:19 1 @Stephan they are likely to be same ballpark; depending on how the encoding is implemented could cause variance in either direction. However, in both cases the real bottleneck is bandwidth (disk or network). The two should be virtually identical on the wire.
In short, neither is "obviously" faster or slower. Feel free to profile though. – Marc Gravell?
Apr 19 at 22:09 Alright Marc, thank you for answer and all the effort you put into protobuf-net. – Stephan Apr 19 at 22:14.
I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.