Как определить глобальную переменную в веб-приложении ASP.net - PullRequest
8 голосов
/ 13 ноября 2010

У меня есть требование,

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

как решить эту проблему?

спасибо.

Ответы [ 4 ]

10 голосов
/ 13 ноября 2010

Другим вариантом определения глобальной переменной является создание статического класса со статическим свойством:

public static class GlobalVariables
{
    public static string MyGlobalVariable { get; set; }
}

Вы можете сделать это более сложным, если собираетесь использовать это в качестве хранилища данных, но та же идея подходит. Скажем, у вас есть словарь для хранения ваших глобальных данных, вы можете сделать что-то вроде этого:

public static class GlobalData
{
    private static readonly object _syncRoot = new object();
    private static Dictionary<string, int> _data;

    public static int GetItemsByTag(string tag)
    {
        lock (_syncRoot)
        {
            if (_data == null)
                _data = LoadItemsByTag();

            return _data[tag];
        }
    }

    private static Dictionary<string, int> LoadItemsByTag()
    {
        var result = new Dictionary<string, int>();

        // Load the data from e.g. an XML file into the result object.

        return result;
    }
}
5 голосов
/ 13 ноября 2010

Чтобы поделиться данными со всеми пользователями приложения, вы можете использовать объект приложения ASP.NET. Приведен пример кода для доступа к объекту приложения в ASP.NET:

.
Hashtable htblGlobalValues = null;

if (Application["GlobalValueKey"] != null)
{
    htblGlobalValues = Application["GlobalValueKey"] as Hashtable;
}
else
{
    htblGlobalValues = new Hashtable();
}

htblGlobalValues.Add("Key1", "Value1");
htblGlobalValues.Add("Key2", "Value2");

this.Application["GlobalValueKey"] = htblGlobalValues;

Application["GlobalValueKey"] может использоваться любым пользователем во всем приложении. Это будет общим для всех пользователей приложения.

2 голосов
/ 13 ноября 2010

Вы можете добавить данные в объект Application, если хотите.Это не является постоянным во всех экземплярах приложения, но этого может быть достаточно.

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

http://msdn.microsoft.com/en-us/library/system.web.ui.page.application.aspx
http://msdn.microsoft.com/en-us/library/system.web.httpapplication.aspx

0 голосов
/ 15 ноября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...