ASP.Net Отслеживание активности пользователей в базе данных - PullRequest
12 голосов
/ 22 декабря 2009

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

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

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

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

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

Подход 2: Используйте триггеры базы данных, чтобы выбрать события на уровне таблицы, а затем выполнить регистрацию. Это будет полностью «абстрактно» для приложения. В каждой таблице есть поле «LastModifiedBy», поэтому я получу данные «актера» и смогу вести регистрацию, но это может ограничить меня операциями с БД и потребовать, чтобы я отслеживал другие действия приложения отдельно. но если оно того стоит, я могу это рассмотреть.

Подход 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 Разное - Некоторые другие варианты, с которыми я столкнулся, но не кажущиеся слишком убедительными, или я бы лучше сказал, что они выполняют свою работу, но не мою: -)

Ссылка -

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

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

Спасибо.

Ответы [ 2 ]

1 голос
/ 30 августа 2012

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

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

1 голос
/ 10 января 2011

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

...