es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Evento de activación para SignalR.

Estoy usando SignalR para actualizar el lado del cliente cuando los datos cambian en el backend. Los datos pueden provenir tanto de SQL Server como de una base de datos NoSQL.

Lo que estoy haciendo ahora es: tengo un temporizador en el backend que constantemente intenta verificar si hay algún cambio en la base de datos y, si lo detecta, permito que SignalR actualice el lado del cliente.

No creo que este enfoque sea bueno: el valor del intervalo del temporizador no puede ser realmente pequeño, incluso con 1 segundo tengo una gran carga en la base de datos. Además, no es en tiempo real y incluso 1 segundo es demasiado grande. Además, es bastante difícil detectar un cambio en la base de datos si no se trata de agregar un nuevo registro, pero calcular algún hash para todos los registros cada 1 segundo o incluso menos definitivamente no es una opción.

Creo que solía leer sobre otro enfoque que se basa en algún evento disparado ya sea por la base de datos o por otra cosa, pero no puedo recordarlo. Entonces, me preguntaba si alguien podría aconsejarme una solución mejor.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en c#, sql-server, asp.net-core y SignalR, sugiero utilizar la función Change Data Capture (CDC) en SQL Server, que notifica cambios en una tabla. De esta manera, puedes evitar sobrecargar la base de datos y hacer que tu aplicación sea más en tiempo real.

    Puedes configurar un trabajo en el agente de SQL Server para iniciar un procedimiento almacenado que envíe los cambios a SignalR. Además, puedes utilizar el paquete NuGet “SqlTableDependency” para realizar un seguimiento fácil de los cambios en las tablas de SQL Server.

    Para las bases de datos NoSQL, puedes utilizar desencadenadores (triggers) o encuesta (polling). El enfoque de trigger es similar al enfoque de CDC en SQL Server. Por ejemplo, MongoDB tiene una función integrada de transmisión de cambios que puedes utilizar para transmitir cambios de datos en tiempo real.

    En resumen, recomiendo el uso de CDC o la función de transmisión de cambios en función de la tecnología de la base de datos que estés utilizando, y utilizar el paquete NuGet SqlTableDependency para facilitar el seguimiento de los cambios en SQL Server. Esto te ayudará a lograr actualizaciones más en tiempo real y a reducir la carga en la base de datos.

Comments are closed.