2011-07-12 31 views
7

Quiero crear una aplicación en C# con los lados del cliente y del servidor. Funcionará a través de la red local. Los lados del cliente deben verificar las actualizaciones en un SQL Server remoto. Digamos que hemos establecido el intervalo de tiempo de actualización en 2 segundos. Si tengo 20 aplicaciones del lado del cliente, enviarán consultas al SQL Server remoto cada 2 segundos y cargará bastante el servidor. Ahora quiero saber si hay alguna manera de reducir la carga del servidor o si es la única manera de buscar actualizaciones.Cómo reducir las cargas remotas de SQL Server?

+0

¿Qué son los datos Qué se necesita para comprobar si hay tanta frecuencia? – Gareth

+0

es sistema de administración de colas –

Respuesta

14

Desde mi punto de vista, no hay necesidad de permitir a los clientes conectar el seridor DB directamente. Debería haber un nivel más aquí que solo se conectará al servidor y almacenará información en caché sobre las actualizaciones. Sus clientes deben conectarse a esta información adicional y trabajar con la información en caché.

ACTUALIZACIÓN Por lo que yo entiendo, el problema aparece debido a que todos sus clientes ping a su servidor de base de datos cada dos segundos. La solución a este problema es crear un módulo especial que solo tendrá acceso al servidor de BD y le pedirá la actualización. Por ejemplo, cada dos segundos. Si la actualización está lista, debería poder obtenerla de la base de datos y almacenarla. Esto es lo que quise decir debajo del nivel adicional.

Ahora, volvamos a sus clientes. Deberían poder comunicarse con este módulo y obtener información sobre una actualización (esta información está almacenada en la memoria caché y, por lo tanto, es muy rápido para obtenerla. Además, no necesita hacer ping al servidor a petición de cada cliente). Si la actualización está lista, búsquela en el lado del cliente y trabaje en el lado del cliente.

En cuanto a la comunicación entre este nivel adicional y los clientes. Dado que está trabajando con .NET, le sugiero que eche un vistazo al WCF que, desde mi punto de vista, se convierte en un enfoque estándar para implementar la comunicación entre procesos en .NET. Hay mucha información en la red al respecto, publicaré los enlaces en breve.

Aquí es mi libro favorito WCF:

Programming WCF Services

MSDN entrada:

Windows Communication Foundation

+0

por favor explique más detallado, si puede, por adelantado –

+0

@ user841470: En otras palabras, llame a una capa de nivel medio. Podría usar algo como una SqlCacheDependency que almacena en caché una consulta o tabla. De esta manera, la memoria caché siempre tiene los últimos datos. Esto podría implementarse como un servicio web o servicio WCF que está haciendo el almacenamiento en caché. La aplicación llama al servicio web/WCF, al que se devuelven los datos relevantes. –

+0

@ user841470, he actualizado la respuesta – platon

Cuestiones relacionadas