Ограничить количество звонков через веб-службу в установленные сроки - PullRequest
0 голосов
/ 12 апреля 2011

У меня есть веб-служба asmx , которая принимает в качестве входных данных несколько простых типов, вызывает хранимую процедуру Oracle , от которой она получает ответ, а затем передает этот ответ вызывающей стороне..

Я хотел бы передать входные данные в службу и, предположив, что они действительны и требуемая операция успешно завершена, я бы хотел как-то сохранить входные данные (эффективным способом, поэтому не нажимаянапример, базы данных) в течение согласованного промежутка времени, затем отклоните любые попытки вызвать службу с теми же данными, пока не истечет этот промежуток времени.Надеюсь, это понятно.

Итак, с помощью псевдокода ...

[WebMethod]
public Response DoThings(int someInt, string someString, DateTime someDateTime)
{
  if(!Stored(someInt, someString, someDateTime))
    {
       var response = new OracleRepository().CallStoredProcedure(someInt, someString, someDateTime);
       StoreInputs(someInt, someString, someDateTime);

       return response;
    }
  else return Response.TryLater;

}

private void StoreInputs(int someInt, string someString, DateTime, someDateTime)
  {
     Store(int someInt, string someString, DateTime, someDateTime);
  }

private bool Stored(int someInt, string someString, DateTime, someDateTime)
  {
     //some code to find out if the data is stored
  }

Я не новичок, но я новичок в C #, поэтому не совсем уверен, гденачать.Любая помощь будет принята с благодарностью.

Спасибо.

1 Ответ

2 голосов
/ 12 апреля 2011

с помощью HttpContext.Current.Cache вы сможете кэшировать результат вызова хранимой процедуры, а затем при следующем запросе запросить данные и, если он найден, вернуть эти данные вместо выполнения нового вызова хранимой процедуры.

метод .Add в классе кэша имеет параметры для данных max age, см .: http://msdn.microsoft.com/en-us/library/system.web.caching.cache.add.aspx

...