Стратегия отслеживания недавних действий пользователей - PullRequest
9 голосов
/ 06 октября 2008

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

Итак, моя мысль - это 15-минутный интервал для определения активности пользователя. Вот некоторые идеи, которые у меня есть для этого:

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

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

Что вы думаете? И как бы вы справились с этой ситуацией?

Разъяснение

Я бы хотел использовать одну и ту же архитектуру как для Windows, так и для Интернета, если это возможно. У меня есть один уровень бизнес-логики, с которым взаимодействуют несколько пользовательских интерфейсов, может быть Windows или Интернет.

Под Windows я имею в виду клиент-сервер.

Разъяснение

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

Это не приложение с высоким трафиком, так как оно было разработано для наших клиентов, может быть, максимум 100 пользователей.

Ответы [ 12 ]

0 голосов
/ 06 октября 2008

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

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

Если вы действительно ищете в настоящее время онлайн, ваш первый вариант является лучшим.

0 голосов
/ 06 октября 2008

Я бы просто сбросил таблицу записей журнала в БД.

UserId int FK
Действие char (3) ('in' или 'out')
Время DateTime

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

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