My understanding is Node.js is caching the same read requests to avoid having to hit the DB?
ApiController does not do that by default in MVC4, for reasons best known to themselves, regular vanilla controllers do.
However, this: https://github.com/filipw/AspNetWebApi-OutputCache
Fixes that.
I appreciate it might be cheating a bit to bring in a 3rd party library when looking at a full stack provider, but it would explain the discrepancy between Read and Write performances.
Additionally, with the EntityFramework (MS's ORM) when the security you are using is not that of the SQL back end, it can be beneficial to 'cache' it, rather than use a session each time. There are obvious cons to this, but it is a very real world scenario, one of the nice things about an ERM (Entity-Relationship-Model), well the only nice thing, is that it ensures the integrity of the data. Assuming you defined it correctly, which is sometimes an arse, in the same way you don't end up with the perfect 3NF design the academics taught us.
I've put a reminder in my calendar once I'm done on this project (all hands on deck time, as the business has imposed a deadline, without consulting...) I feel I could give a more realistic example.