ASP.Net śledzenie aktywności użytkowników w bazie danych

Chodzi o prosty, ale wydajny framework rejestrowania aktywności, który chcę zintegrować z moim istniejącym ASP.Net oparty web-app (mam LINQ-to - SQL oparty SQL DB jako backend). Używam czegoś w rodzaju architektury usług do wykonywania operacji DB - czyli wywoływania odpowiednich operacji LINQ. Mam klasę usług dla prawie każdego podmiotu (np. tabeli DB) i obsługuje operacje CRUD.

Ogólnie rzecz biorąc, muszę śledzić działania jak-Mr. X dodał nową pozycję, My.Y / align = "left" / wynik siatki do Excela dokument itp... i podobne proste rejestrowanie oparte na operacjach (na poziomie pola logowanie jest na razie daleko)

Oto co znalazłem podczas moich dwóch dni Badań i rozwoju NA SO, innych forach i w sieci:

Podejście 1: Prosty stary sposób użycia dwóch tabel: Activity (przechowuje wszystkie działania wraz z aktorem) & ActivityType (wyświetla typy działań). Mam warstwę serwisową więc albo mogę mieć Klasa "ServieBase", która włącza wszystkie zdarzenia CRUD i rejestruje ten, który mnie interesuje. Wszystko jest obsługiwane z poziomu kodu.

Przykład: http://dotnetslackers.com/articles/aspnet/Tracking-User-Activity.aspx

Podejście 2: Użyj wyzwalaczy bazy danych, aby stuknąć zdarzenia na poziomie tabeli, a następnie wykonać rejestrowanie. Będzie to całkowicie "abstrakcyjne" dla aplikacji. Mam pole" LastModifiedBy "w każdej tabeli, więc zdobędę dane "aktora" i mogę zrobić rejestrowanie, ale może to ograniczyć mnie do DB-operations & trzeba mnie śledzić inne działania aplikacji oddzielnie. ale jeśli to jest warte, mogę to rozważyć.

Podejście 3: (koncepcyjne, potrzeba więcej wskazówek)

3.1 podejście MVC - myślimy o przyjęciu MVC w przyszłości i znalazłem kilka skutecznych sztuczek logowania w MVC takich jak - (czy jest coś takiego w przypadku tradycyjnej aplikacji internetowej opartej na L2S?)

Zaloguj Aktywność Użytkownika na ASP.NET aplikacja MVC Track user działanie / działania na rzecz asp.net strona mvc?

3.2 Usługi Śledzenia natknąłem się na funkcję "usługi śledzenia" w systemie windows - czy jest jej odpowiednik internetowy?

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

3.3 Misc - kilka innych opcji, które natknąłem się, ale nie wydają się zbyt przekonujące lub lepiej powiedzieć, że wykonują swoją pracę ale nie Moje : -)

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

Więc co powiesz? Wszelkie sugestie i nowe przemyślenia są mile widziane. Na razie wygląda na to, że wylądowałbym gdzieś pomiędzy dwoma pierwszymi podejściami ponieważ chcemy, aby w przyszłości było łatwo dodać dowolną dodatkową aktywność do logowania.

Dziękuję.

Author: Community, 2009-12-22

2 answers

Oto kolejny element do dodania do zestawu narzędzi: SQL Server Change Tracking. Ale nie zrobi tu wszystkiego, czego szukasz. Możesz przyjrzeć się wzorcowi komend . Chciałbym stworzyć interfejs, ITrackedCommand, a następnie zaimplementować je jako polecenia, które użytkownik może wykonać. Następnie każdy z nich jest wykonywany przez dyspozytora poleceń, który automatycznie wywołuje ITrackedCommand.Log. Myślę, że to zaprowadzi cię tam,gdzie musisz.

 1
Author: Chris B. Behrens,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-10 20:01:50

W końcu skorzystałem z dwóch pierwszych podejść, ponieważ wydają się prostsze i łatwiejsze. Przede wszystkim zapewniają większą kontrolę i pozwalają utrzymać rzeczy tak elastyczne ,jak to wymagane (tj.]}

Zaznaczam, że nie ma innych obszernych recenzji.

Dziękuję.

 1
Author: Hemant Tank,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-30 15:20:52