Search code examples
c#azure-cloud-services

Azure Cloud Services: maintaining object references across different requests


I have a (classic) cloud service that needs to create an expensive object that I want to be reused in subsequent requests. It takes a long time to create so creating it each time slows down the requests unacceptably.

public class MyService : IHttpHandler
{
    public static ExpensiveObject MyObject;

    public void ProcessRequest(HttpContext context)
    {
        if (MyObject == null) 
            MyObject = new ExpensiveObject();  // very time consuming operation

        // do stuff with MyObject
    }
}

(I realise the lack of consideration for multiple concurrent requests running, please disregard that) When I post two requests, one after the other, it creates a new MyObject each time. How can I ensure that it reuses the same object created for each request?

Setting IsReusable to return true in the MyService seemingly makes no difference.


Solution

  • To achieve this easily (without dealing with arcane Azure crap) I just made a separate executable that hosts the ExpensiveObject in a Nancy localhost server (started in a startup script).

    In my case this has no significant drawbacks as I just need to request the object to consume a string and return another string. This might not be the right solution for everyone however.