Pregunta

No estoy muy seguro de cómo la cuestión debe ser expresada, así que por favor sea paciente si le pido algo equivocado.

Estoy escribiendo una aplicación ASP.NET mediante VB como el código detrás del lenguaje. Tengo una clase de datos de acceso que se conecta a la base de datos para ejecutar la consulta (parametrizado, por supuesto), y otra clase para llevar a cabo las tareas de validación - accedo a esta clase de mi página aspx

.

Lo que me gustaría es ser capaz de almacenar el lado del servidor de datos y esperar a que el usuario pueda elegir entre varias opciones en función de la validez de los datos. Pero a menos que mi entendimiento está completamente fuera, tener objetos de datos persistentes en el servidor va a dar problemas cuando varios usuarios se conectan?

Mi objetivo final es que una vez que los datos se han validado el usuario final no puede modificarla. Actualmente estoy validación de los datos, pero todavía tengo que recuperarla desde el formulario web cuando el usuario dice OK, lo que, obviamente, deja abierta la posibilidad de inyectar datos erróneos, ya sea por accidente (poco probable) oa propósito (también poco probable para el uso, pero yo prefiero no correr el riesgo).

Así que estoy completamente fuera de mi entendimiento? Si es así, mi punto puede una persona a un recurso que proporciona algunas instrucciones sobre cómo mantener los datos persistentes en el servidor, o proporcionar instrucciones?

Gracias!


ejemplo concreto:

Recientemente contratamos Inspector Gadget para insertar datos de los Inspectores de la muestra que va 'alrededor de la inspección de las señales de la carretera para asegurarse de que ninguno de ellos ha sido destrozado o robado por la masticación de chicle, normalmente erectos miembros del consejo de la ciudad de la juventud.

Si Gadget puede demostrar su valía entonces podría ser promovido a hacer las inspecciones de signos reales. Por ahora, su único trabajo consiste en ir a este sitio intranet de una información sobre las inspecciones inputing más reciente. El distrito, condado, ruta #, tramo de carretera, y las fechas de la señal fue instalado y ensayado.

Por supuesto, cualquiera de nosotros que estaban vivos a finales de los años 80 están familiarizados con Gadgets ineptitud. Por lo que el sitio se trata como prueba de gadgets como podemos hacerlo. El distrito / condado / ruta se llenaron todos a través de una lista desplegable, sólo tiene que introducir manualmente el inicio y al final la sección y las fechas. En ocasiones se tantea el ratón y finaliza a cabo el bombeo de empezar y al final de la sección, do! Así las vueltas texto rojo que le avise de la equivocación. Por desgracia, eligió usar sus gafas de sol anti-rojos que se convierten hoy en día todos los colores rojo a negro. Bueno, después de intentar enviar los datos que le muestra un mensaje de error le dónde y lo que necesita para arreglar diciendo. Por desgracia, la grasa de dedos del teclado y en lugar de ingresar 1.337 que puso en 13.37 (millas) - y el camino está a sólo 10 millas de largo! Pues bien, ahora un mensaje (un div modal) aparece y le dice que el kilometraje real de la carretera es de 0-10, y que su entrada combinará tres tramos de la carretera. Entonces se le da tres botones para elegir. Cancelar, que le permite ir y modificar sus datos, Restringir, que convertirán 13.37 a 10, y la anulación de los cuales se le permitirá introducir los datos de todos modos.

"Yowza!" Gadget exclamó, y hacer clic en Cancelar para volver atrás y corregir su error. Bueno, el siguiente conjunto de datos de entrada que correctamente, por lo que un mensaje de confirmación aparecido mostrándole los cambios que estaba a punto de hacer y preguntando si estaba bien para continuar. Bueno, por desgracia Inspector Gadget volcó su taza de café, dispersando detritus encima de la mesa. En su prisa para limpiarlo, se hace clic en "Aceptar", pero no antes de que su Go-Go-Gadget electroimán volcó accidentalmente unos pocos bits en su ordenador, cambiando el condado en forma de Arkansas a AKRSANAS, do!

Si los datos se almacenan en el servidor a través del campus, y la única información pasada era "OK" o "Cancelar", esto se podría haber evitado.


Por supuesto que siempre se puede validar más después de que el "bien", pero apenas se parece como una solución hacky.

En cualquier caso, espero que esto aclare!

¿Fue útil?

Solución

creo que está pensando acerca del uso de la caché del servidor web. En ASP.NET, puede utilizar Context.Cache para almacenar datos en el servidor. Una vez que una caché de usuario es todo, cualquier otro usuario en el servidor también se puede acceder a él.

Dado que los datos se almacenan en caché en el servidor, que desea borrar la memoria caché cada vez que se llama a una consulta de actualización en la base de datos. A continuación, la próxima vez que cargue los datos, puede guardar los datos en la caché de nuevo.

En el método de selección, compruebe si su caché [clave] no es nulo. Si es así, a continuación, cargar los datos de la base de datos y luego guardarlo en caché [clave] antes de devolver los datos. Si no es nulo, entonces simplemente cargarlo desde la memoria caché en lugar de la base de datos.

La clave que utilice puede contener sus parámetros por lo que no tiene que filtrar los datos de la memoria caché .... o simplemente la clave puede ser genérica por lo que almacena todos sus datos. A continuación, puede realizar una consulta LINQ en los datos de filtro para sus parámetros

Espero que esto sea de ayuda.

Otros consejos

creo que usted se refiere a concurrencia . Consulte el enlace para empezar a trabajar en la comprensión de que, si eso es lo que estás preguntando. Es probable que tenga que hacer un poco más de investigación en función de su extremo posterior y su situación específica. Una vez más, si esto es lo que está buscando puede estar interesado en particullary pesimista concurrencia.

http://en.wikipedia.org/wiki/Concurrency_control


EDIT: Después de leer su ejemplo .... suena como es posible que desee hacer lo siguiente, la buena suerte.

  1. "bloqueo" del registro usando un patrón de concurrencia pesimista de algún tipo (en la db ya que es donde los datos realmente es) cuando se accede a ella por el usuario inputing los datos . Esto es como hacer el disco de sólo lectura db.

  2. Cuando el usuario pulsa Aceptar que probablemente tiene que validar a través de código asp.net, y si se pasa la validación, actualización de la base de datos y desbloquear el registro db.

  3. Si el usuario selecciona cancelar, no actualizar el registro db, simplemente desbloquearlo.

  4. Si el usuario quiere forzar la entrada, a continuación, sólo actualizar la base de datos y desbloquear el registro db.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top