Over the last couple of days I’ve been playing around with Nancy, one of a number of micro web frameworks now available for the .Net platform. You can read more about Nancy on their github readme page but in short it’s an ultra lightweight, easily extensible framework that lets you run a HTTP web server in a number of hosting environments (IIS, WCF, or inside a simple console app) and can integrate with a number of view engines (Razor, Spark, NDjango, etc).
If you’re not familiar with how Nancy works, I’d recommend taking half an hour or so and go through the documentations first.
On the deserialization side, Nancy supports JSON and XML binding out of the box, to add protocol buffer support to the equation all you need to do is to create a class that implements the IBodyDeserializer interface and the Nancy bootstrapper will take care of the rest (it auto registers all the implementations of the relevant interfaces at startup).
However, if there are more than one implementation of IBodyDeserialize defined in the loaded assembly which can deserialize the content type application/x-protobuf then at runtime the deserializer will be chosen at random.
To serialize the response body with protobuf-net, all you need to do in the handler is to return a Response object and serialize the object you want to return like this:
Alternatively, you can create a subtype of Response and take in the object you want to use as the response body and automatically serialize it, something along the line of:
I specialise in rapidly transitioning teams to serverless and building production-ready services on AWS.
Are you struggling with serverless or need guidance on best practices? Do you want someone to review your architecture and help you avoid costly mistakes down the line? Whatever the case, I’m here to help.
Check out my new course, Complete Guide to AWS Step Functions. In this course, we’ll cover everything you need to know to use AWS Step Functions service effectively. Including basic concepts, HTTP and event triggers, activities, callbacks, nested workflows, design patterns and best practices.
Here is a complete list of all my posts on serverless and AWS Lambda. In the meantime, here are a few of my most popular blog posts.
- Lambda optimization tip – enable HTTP keep-alive
- You are thinking about serverless costs all wrong
- Many faced threats to Serverless security
- We can do better than percentile latencies
- I’m afraid you’re thinking about AWS Lambda cold starts all wrong
- Yubl’s road to Serverless
- AWS Lambda – should you have few monolithic functions or many single-purposed functions?
- AWS Lambda – compare coldstart time with different languages, memory and code sizes
- Guys, we’re doing pagination wrong