Обмен данными между выбранными пользователями в веб-приложении c # - PullRequest
0 голосов
/ 27 сентября 2010

Мой сайт использует веб-контроль пользователя.Свойства для пользовательского элемента управления будут установлены и будут общими для набора моих пользователей.например, если у меня есть 20 пользователей, обращающихся к моему веб-сайту, 5 из них могут использовать пользовательский элемент управления с id = 1, 4, используя пользовательский элемент управления с id = 2.У меня есть свойство, связанное с каждым пользовательским элементом управления, которым я хотел бы поделиться с пользователями, имеющими общий идентификатор.

Я подумал о следующем:

  • Переменная Applicaton, которая сохраняет идентификаторКомбинация массива / proprty value
  • Создание статических свойств для пользовательского элемента управления, однако мне кажется, что значение будет изменено между всеми пользователями независимо от идентификатора.
  • Или сохраните его в базе данных [я хочу уменьшить взаимодействие с базой данных.]

Пожалуйста, совет.

Ответы [ 3 ]

0 голосов
/ 27 сентября 2010

Не уверен, правильно ли я вас понимаю;при условии, что вы хотите показать / скрыть определенный элемент на основе id.

. Если это так, то как насчет:

Вы предоставляете случай переключения в вашем контроле при загрузке;который проверяет id и устанавливает видимость элемента, которым вы хотите поделиться.

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

switch (nRoleID)
{ 
    case 1: //Set controls visibility and hide others/
        break;
    case 2: //Do something.
        break; ;
    default: //Hide all
        break;
}

Просто мысли вслух.

0 голосов
/ 27 сентября 2010

Помните, что HTTP не имеет состояния, , поэтому ваши первые 2 варианта не будут работать.

Лучшей альтернативой является хранение информации, которая является общей для нескольких пользователей, - это БД.

0 голосов
/ 27 сентября 2010

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

Если вас это устраивает, вы можете подумать о хранении вашей информации в кэше ASP.NET, например,

System.Web.Caching.Cache cache = Page.Cache;

List<KeyValuePair<string, object>> controlSetup;

controlSetup = cache.Get("ControlSetup" + this.Id.ToString());

if (controlSetup == null)
{
    // Create the control setup from scratch
    // Put the created control setup into the cache
    cache.Put("ControlSetup" + this.Id.ToString(), controlSetup);
}

foreach (KeyValuePair(string, object) item In controlSetup
{
    // Set the control values
}
...