2009-12-22 18 views
12

Si tratta di un framework di registrazione delle attività semplice ma efficiente che desidero integrare con la mia app Web basata su ASP.Net esistente (dispongo di un DB SQL basato su LINQ-SQL backend). Sto usando qualcosa di simile a un'architettura di servizio per eseguire operazioni di DB: questo è il richiamo delle operazioni LINQ rilevanti. Ho una classe di servizio per quasi tutte le entità (cioè la tabella DB) e gestisce le operazioni CRUD.ASP.Net Tracciamento attività utente nel database

In generale, ho bisogno di tenere traccia delle attività come - Mr.X aggiunta una nuova voce, My.Y cercato su questo filtro, Mr.Z esportato il risultato di griglia a un documento di Excel , ecc ... e simili semplice logging basato funzionamento ( registrazione a livello di campo è di gran lunga per ora)

Quindi, ecco cosa ho trovato nei miei due giorni di R & D sulle SO, altri forum e il web:

Approccio 1: Semplice vecchio modo di utilizzare due tabelle: Attività (memorizza TUTTE le attività insieme al relativo attore) & ActivityType (elenca i tipi di attività). Ho un livello di servizio così posso avere una classe "ServieBase" che tocca TUTTI gli eventi CRUD e registra quello in cui sono interessato. Tutto è gestito dall'interno del codice.

Esempio: http://dotnetslackers.com/articles/aspnet/Tracking-User-Activity.aspx

Approccio 2: utilizzare il database trigger per toccare eventi a livello di tabella e quindi eseguire la registrazione. Questo sarà completamente 'astratto' per l'app. Ho il campo "LastModifiedBy" in ogni tabella, quindi otterrò i dati "attore" e potrò fare il logging ma questo potrebbe limitarmi alle operazioni DB & mi serve per tenere traccia delle altre attività dell'app separatamente. ma se vale la pena, posso considerarlo.

Approccio 3: (concettuale, hanno bisogno di ulteriori indicazioni)

3.1 approccio MVC - Stiamo pensando di adottare MVC in futuro e ho trovato alcuni trucchi di registrazione efficienti in MVC come - (IS ther qualcosa di simile per la tradizionale L2S basato sul web-app?)

Log User Activity on ASP.NET MVC Application Track user activity/actions for an asp.net mvc website?

3.2 monitoraggio Servizi Mi sono imbattuto in una funzionalità di "servizio di tracciamento" in windows: esiste il suo equivalente Web?

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

3.3 Varie - Alcune altre opzioni che mi sono imbattuto, ma non sembrano troppo convincenti o meglio che mi dicono di fare il loro lavoro, ma non il mio :-)

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

Allora, che dire? Eventuali suggerimenti e nuovi pensieri sono i benvenuti. Per ora, sembra che mi troverei a metà strada tra i primi due approcci, perché vogliamo che sia facile in futuro essere in grado di aggiungere qualsiasi attività extra da registrare.

Grazie.

risposta

1

Ho finito per utilizzare tra i primi due approcci perché sembrano più semplici e più facili. Soprattutto forniscono un maggiore controllo e consentono di mantenere la cosa flessibile come richiesto (vale a dire vicino alla codifica backend effettiva che lo rende più accessibile)

L'ho contrassegnato come non ci sono state altre recensioni estese.

Grazie.

+0

Hai fatto bene. Sto cercando di costruire la stessa identica cosa. – Zapnologica

1

Ecco un altro elemento da aggiungere al tuo toolkit: Sql Server Change Tracking. Ma non farà tutto quello che stai cercando qui. Potresti dare un'occhiata allo Command pattern. Vorrei creare un'interfaccia, ITrackedCommand, e quindi implementare quelli come i comandi che l'utente può eseguire. Quindi, ognuno viene eseguito tramite un dispatcher di comandi che chiama automaticamente ITrackedCommand.Log. Penso che ti porterà dove devi andare.

Problemi correlati