Сведения о вопросе

nikolya

11:53, 19th August, 2020

Теги

лучший способ сохранения данных в веб-службе .NET

Просмотров: 407   Ответов: 4

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

Обновление: оба предложения, кэширование и использование статических переменных, выглядят хорошо. Может быть, мне стоит использовать оба варианта, чтобы сначала посмотреть на один, а если его там нет, то использовать второй, если его там тоже нет, тогда я посмотрю на файл json.



  Сведения об ответе

PAGE

08:15, 10th August, 2020

Продолжая идею Ice^^Heat, вы можете подумать о том, где бы вы могли кэшировать-либо кэшировать содержимое файла json в кэше приложения, например:

Context.Cache.Insert("foo", _
                 Foo, _
                 Nothing, _
                 DateAdd(DateInterval.Minute, 30, Now()), _
                 System.Web.Caching.Cache.NoSlidingExpiration)

А затем генерировать результаты, которые вам нужны от этого на каждом ударе. Кроме того вы можете кэшировать выходные данные webservice в определении функции:

<WebMethod(CacheDuration:=60)> _
Public Function HelloWorld() As String
    Return "Hello World"
End Function

Информация, собранная из XML стратегий кэширования веб-служб .


  Сведения об ответе

Chhiki

18:00, 8th August, 2020

Как насчет использования глобального или статического объекта коллекции? Это хорошая идея?


  Сведения об ответе

ASSembler

13:09, 18th August, 2020

ASP.NET кэширование работает так же хорошо с веб-службами, поэтому вы можете реализовать обычное кэширование, как описано здесь: http://msdn.microsoft.com/en-us/library/aa478965.aspx


  Сведения об ответе

lourence

18:36, 8th August, 2020

Если ваши данные JSON не будут часто меняться , я думаю, что самый простой способ кэшировать их - это использовать какую - нибудь статическую коллекцию-возможно, DataTable.

Во-первых, проанализируйте ваши данные JSON в System.Data.DataTable и сделайте их статическими в вашем классе веб-службы. Затем откройте статический объект. Данные должны оставаться в кэше до тех пор, пока IIS не восстановит пул приложений.

public class WebServiceClass
{
    private static DataTable _myData = null;
    public static DataTable MyData
    {
        get
        {
            if (_myData == null)
            {
                _myData = ParseJsonDataReturnDT();
            }
            return _myData;
        }
    }

    [WebMethod]
    public string GetData()
    {
        //... do some stuff with MyData and return a string ...
        return MyData.Rows[0]["MyColumn"].ToString();
    }
}


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться