Подтвердить что ты не робот

ASP.Net Отслеживание активности пользователей в базе данных

Это простую, но эффективную структуру ведения журнала активности, которую я хочу интегрировать с моим существующим веб-приложением на базе ASP.Net(на базе SQL DB на основе LINQ-SQL). Я использую что-то вроде сервис-архитектуры для выполнения операций с БД - это вызывает соответствующие операции LINQ. У меня есть класс обслуживания почти для каждого объекта (т.е. Таблицы БД), и он обрабатывает операции CRUD.

В целом мне нужно отслеживать действия вроде - Mr.X добавил новый элемент, My.Y поиск на этом фильтре, Mr.Z экспортируется результат Grid для Excel документ и т.д. и аналогичные простые основанный на работе (полевой уровень регистрация сейчас далека)

Итак, вот что я нашел за два дня R & D на SO, других форумах и в Интернете:

Подход 1: Простой старый способ использования двух таблиц: Activity (сохраняет ВСЕ действия вместе с его актером) и ActivityType (перечисляет типы действий). У меня есть служебный слой, так что у меня может быть класс "ServieBase", который удаляет ВСЕ события CRUD и записывает ту, в которой я заинтересован. Все обрабатывается из кода.

Пример: http://dotnetslackers.com/articles/aspnet/Tracking-User-Activity.aspx

Подход 2: Используйте TRIGGER для доступа к событиям на уровне таблицы, а затем выполните регистрацию. Это будет полностью "абстрактным" для приложения. У меня есть поле "LastModifiedBy" в каждой таблице, поэтому я получаю данные "actor", и я могу выполнить регистрацию, но это может ограничить меня операциями DB и требует от меня отслеживать другие действия приложения отдельно. но если это стоит, я могу это рассмотреть.

Подход 3: (концептуально, нужно больше рекомендаций)

3.1. Подход MVC. Мы думаем о принятии MVC в будущем, и я нашел некоторые эффективные трюки для регистрации в MVC, например - (это что-то похожее на традиционное веб-приложение на основе L2S? )

Зарегистрировать активность пользователя в приложении ASP.NET MVC Отслеживать действия пользователя/действия для веб-сайта asp.net mvc?

3.2 Службы отслеживания Я столкнулся с функцией отслеживания в Windows - есть ли ее веб-эквивалент?

http://msdn.microsoft.com/en-us/magazine/cc163466.aspx http://www.codeproject.com/KB/WF/WWF__Tracking_Service.aspx?msg=2879654

3.3 Разное. Некоторые другие варианты, которые я натолкнулся, но не кажутся слишком убедительными, или я бы сказал, что они выполняют свою работу, но не мои: -)

Ref -

http://learn.iis.net/page.aspx/480/sample-web-analytics-tracking-module/

SQL Profiler: https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-5054787.html http://technet.microsoft.com/en-us/library/cc966515.aspx

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

Спасибо.

4b9b3361

Ответ 1

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

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

Спасибо.

Ответ 2

Здесь добавлен еще один элемент для добавления в ваш инструментарий: Sql Server Change Tracking. Но он не будет делать все, что вы ищете здесь. Вы можете взглянуть на шаблон Command. Я бы создал интерфейс, ITrackedCommand, а затем реализовал их как команды, которые пользователь может выполнить. Затем каждый из них выполняется через диспетчер команд, который автоматически вызывает ITrackedCommand.Log. Я думаю, что вы получите то, куда вам нужно.