Fail and You Protocol buffer: it’s the object serialization scheme the pretentious little shit on your development team has been talking at you about during lunch hours for the past couple of days. You’ve been feigning interest with a steady stream of “oh-yeahs” and “that-sounds-cools”, so you don’t really know what it is.
Well today is your lucky day because I’m about to drop some science up in this bitch.
It’s Like XML But From Google, Therefore It’s Awesomer
A protocol buffer is a way to serialize an object such that it can be shared across platforms. You define your object in terms of its primitives in a special language, run the protocol buffer compiler over your definition, and it will produce code in your language to serialize and unserialize this object. With Google’s code, you can share objects across any programming languages you want, as long as they are either C++, Java, or Python.
If you’re putting two kids through college, you likely know this technology by the name ASN.1. Otherwise, it’s just XML with a Google pedigree.
What makes the protocol buffer so popular with the pretentious little shits? Aside from wanting to put it on the CV they send to Google every three months, it’s got scalability written all over it. Oh, scalability: the problem that tens of thousands of engineers yearn for, but only six actually have.
Google invented the protocol buffer because they found XML parsing to be too slow, and XML messages too large. Now this is a good optimization in an environment that needs to process tens of millions of requests per minute, but it is unlikely that your company’s CRM system will benefit from it.
Even if you do have a scalability problem that Protocol Buffers could help, you’ll still be unlikely to use them, because putting your prize-winning testicles out on display as you draw boxes and lines on a whiteboard is most of the fun of solving scalability problems. You’ll be damned if Google is gonna cuckold you on this one.
Can you replace XML with protocol buffers? If you’re just at the outset of a project, it may be worth a look. XML, like a venereal disease, spreads from developer to developer by direct contact. The conservative school of thought suggests that the best way to avoid XML is to simply abstain from programming, but a more pragmatic approach can help to contain the spread of the pestilence while still allowing us to do our jobs. Since programmatic reflection is built into the implementation, it is easy to translate protocol buffers to other formats such as XML, so you can do it if you really have to.