ASP.NET кэш веб-службы

#c# #asp.net #web-services #caching

#c# #asp.net #веб-службы #кэширование

Вопрос:

Возможно ли кэшировать выходные данные функции только тогда, когда в качестве параметра передается значение null? Что-то вроде этого:

 [WebMethod(CacheDuration = 360, NullOnly = true)]
public SomeClass MyMethod(MyClass whatever)
{
    //do something...
    return something;
}
  

Итак, когда whatever == null, функция возвращает кэшированный вывод, а когда он не равен null, она генерирует вывод без его кэширования.

Ответ №1:

Я не знаю, существует ли более декларативный метод, но вы можете легко кэшировать результат в обычном кэше и проверить, равен ли аргумент null, вот так:

 public SomeClass MyMethod(MyClass whatever) 
{
    if(whatever == null)
    {
        SomeClass result = Cache["MyMethodCache"] as SomeClass;
        if(result != null)
        return resu<
    }


    //do something...

    if(whatever == null)
    {
         Cache.Add("MyMethodCache",something, ... ); //duration, expiration policy, etc.
    }

    return something; 
} 
  

Однако этой версии потребуется сериализовать результат каждый раз, даже если он извлекается через кэш.