2009-12-22 19 views
12

Se trata de un marco de actividad de registro simple pero eficiente que quiero integrar con mi aplicación web basada en ASP.Net existente (Tengo una base de datos SQL basada LINQ a SQL como backend). Estoy usando algo así como una arquitectura de servicio para realizar operaciones de base de datos, que es invocar operaciones LINQ relevantes. Tengo una clase de servicio para casi todas las entidades (es decir, tabla DB) y maneja las operaciones CRUD.ASP.Net la actividad del usuario el seguimiento de la base de datos

En general, tengo que realizar un seguimiento de las actividades como - Mr.X añade un nuevo artículo, My.Y buscó en este filtro, Mr.Z exportó el resultado de la rejilla a un documento de Excel , etc. ... y simple registro basado operación similar (a nivel de campo registro está lejos por ahora)

por lo tanto, esto es lo que he encontrado en mis dos días de R & D en el SO, y otros foros la web:

Método 1: Manera antigua simple de usar dos tablas: Actividad (almacena TODAS las actividades junto con su actor) & ActivityType (enumera los tipos de actividades). Tengo una capa de servicio así que o puedo tener una clase "ServieBase" que toca TODOS los eventos CRUD y registra el que me interesa. Todo se maneja desde dentro del código.

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

Enfoque 2: Uso de base de datos disparadores de aprovechar los eventos de nivel de tabla y luego realizar el registro. Esto será completamente 'abstracto' para la aplicación. Tengo el campo "LastModifiedBy" en cada tabla, así que obtendré los datos del "actor" y puedo hacer el registro, pero esto podría limitarme a operaciones de DB. & necesito que rastree otras actividades de la aplicación por separado. pero si vale la pena, puedo considerarlo.

Enfoque 3: (conceptuales, necesitan más orientación)

3.1 enfoque MVC - Estamos pensando en la adopción de MVC en el futuro y que he encontrado algunos trucos de registro eficientes en MVC como - (IS Ther nada por el estilo tradicional de L2S aplicación web basada?)

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

3.2 Seguimiento Servicios Me encontré con una función de "servicio de seguimiento" en Windows: ¿existe su 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 Otra información - Algunas otras opciones que me encontré, pero no parecen demasiado convincente o mejor que me dicen que hacen su trabajo, pero no la mía :-)

Ref -

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

SQL: 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

Entonces, ¿qué decir? Cualquier sugerencia y nuevos pensamientos son bienvenidos. Por ahora, parece que llegaría a algún punto entre los primeros dos enfoques porque queremos que sea fácil en el futuro poder agregar cualquier actividad adicional para registrar.

Gracias.

Respuesta

1

Terminé usando uno de los dos primeros enfoques porque parecen más simples y más fáciles. Más que nada, brindan más control y permiten mantener todo lo flexible que se requiere (es decir, está cerca de la codificación real del backend que lo hace más accesible)

Lo estoy marcando ya que no ha habido otras revisiones extensas.

Gracias.

+0

¿Has venido bien? Estoy buscando construir exactamente lo mismo atm. – Zapnologica

1

Aquí hay otro elemento para agregar a su kit de herramientas: Sql Server Change Tracking. Pero no hará todo lo que está buscando aquí. Puede echar un vistazo al Command pattern. Crearía una interfaz, ITrackedCommand, y luego los implementaría como los comandos que el usuario puede realizar. Luego, cada uno se ejecuta a través de un despachador de comandos que llama automáticamente a ITrackedCommand.Log. Creo que eso te llevará a donde necesitas ir.

Cuestiones relacionadas