As for web APIs, JSON is ubiquitous nowadays but in some circumstances we may want to reduce the network traffic as much as possible. In such cases hardly anything beats a binary message format. So, usually I use Protobuf (to be more precise, protobuf-net) for this purpose as it is a well-established data exchange format with multi-platform support.
To add some binary serialization capability to your web API project, first you'll need an InputFormatter/OutputFormatter implementation for the chosen format. In my ASP.NET Core template project I have one for protobuf-net.
After copying this over to your project and doing a bit of configuration in your Startup class, you're good to go: just pass application/x-protobuf in the Content-Type and Accept HTTP headers when you invoke your API and the bits will come and go over the wire in a sexy binary format right away.
One more thing to remember: of course, your models need to be properly decorated with attributes (preferably with DataContract/DataMember attributes to leave the door open for other serialization formatters) to get protobuf-net going. But that's all indeed!
Top comments (0)