We have developed several large websites using the Azure Platform. The only step for success in a cloud environment is to minimize round-trips over the networks - higher performance infrastructure cannot fix the root cause. The critical technology in a Web/SQL Azure application for Performance is multi-recordset calls to Stored Procedures in SQL Server so that we have one round-trip from our webserver to the SQL Server (each trip is 100ms minimum in Azure) per page request. That single stored procedure that is called returns every dataset needed for the page view in one call - we then typecast and read the result sets from the encoded result. This alone is the difference between a 15 second page view time and 250ms. When applying the same methodology to Redis and Blob/Filesystems you will see repeatable and highly scalable response times in the order of <500ms. We have "tweaked" NopCommerce this way to achieve performance on Azure with a single server to 1,000 requests per second with average response time of 600ms or consistently <300ms with 50 request per second (S2 App Service / DS11 SQL Web VM). This change as well as async calls to everything should be the highest priority development task to NopCommerce. Then it would be world-class and really showcase Microsoft Technologies.
Can you please give an example?
We tried to go that way but is seems that all of those small SQL call cannot be gathered to one SQL because each one of them depends on the result of the previous one, so you cannot create SQL script until the previous SQL result returned to C# and processed for next SQL call.
If you managed to have a multi recordset even in part of the code it would be great for the performance of nop.