Frage

Ich bin nicht wirklich sicher, wie die Frage formuliert werden soll, so bitte Geduld, wenn ich die falsche Sache fragen.

Ich schreibe eine ASP.NET-Anwendung mit VB als der Code hinter Sprache. Ich habe eine Datenzugriff-Klasse, die eine Verbindung zum DB der Abfrage (parametriert, natürlich) zu laufen, und ein andere Klasse der Validierungsaufgaben auszuführen - ich Zugriff auf diese Klasse von meiner aspx Seite

.

Was ich möchte, ist in der Lage sein, die Datenserverseite zu speichern und für den Benutzer warten, um von einem paar Optionen auf der Gültigkeit der Daten, wählen. Aber es sei denn, mein Verständnis vollständig ausgeschaltet ist, auf dem Server persistente Datenobjekte hat, wird Probleme geben, wenn mehrere Benutzer eine Verbindung herstellen?

Mein Ziel ist es, dass, sobald die Daten der Endbenutzer es nicht ändern können validiert wurde. Derzeit die Daten Ich bin Validierung, aber ich muss es noch von der Form Web abzurufen, nachdem der Benutzer auf OK sagt, was offensichtlich öffnen lässt die Möglichkeit fehlerhafte Daten der Injektion entweder zufällig (unwahrscheinlich) oder absichtlich (auch unwahrscheinlich, dass für den Einsatz, aber ich würde es vorziehen, nicht die Chance zu nehmen).

So bin ich komplett aus in meinem Verständnis? Wenn ja, kann jemand Punkt mich auf eine Ressource, die einige Anweisungen zu halte persistente Daten auf dem Server bereitstellt, oder eine Anweisung zur Verfügung stellen?

Danke!


Konkretes Beispiel:

Wir Inspector Gadget vor kurzem eingestellter Daten für die Zeichen Inspektoren einzusetzen, die ‚rund gehen, um die Zeichen der Autobahn Inspektion sicher, dass keiner von ihnen zu machen hat durch Kaugummi-Kauen verstümmelt oder gestohlen worden, in der Regel Mitglieder des Jugendstadtrat aufrecht stehende.

Wenn Gadget seinen Mut beweisen kann, dann könnte er die tatsächlichen Zeichen Inspektionen zu tun bekommen gefördert. Vorerst seine einzige Aufgabe besteht in dieser Intranet-Site eine inputing Informationen über die jüngsten Inspektionen gehen. Der Bezirk, Kreis, route # Abschnitt der Straße, und Daten das Zeichen wurde installiert und geprüft.

Natürlich von uns jeder, der in den späten 80er Jahren noch am Leben waren mit Gadgets Ungeschicklichkeit vertraut sind. So ist die Website etwa als Gadget Beweis, wie wir es machen können. Der Bezirk / Kreis / Route wird alles über eine Dropdown-Liste ausgefüllt, er hat nur manuell den Abschnitt Start- und Ende und die Daten eingeben. Gelegentlich fummelt er die Maus und die Enden aus Swapping Anfang und Ende des Abschnitts, doh! So dass der Text wird rot, ihn von dem Fehler aufmerksam zu machen. Leider wählte er seine anti-rote Sonnenbrille heute bekannt, dass alle roten Farben schwarz werden zu tragen. Nun, nachdem die Daten zu übermitteln versucht, sie zeigt ihm eine Fehlermeldung, ihn zu sagen, wo und was er braucht, um fix. Leider den er Fett die Tastatur gefingert und stattdessen 1,337 Eingabe legte er in 13,37 (Meilen) - und die Straße ist nur 10 Meilen lang! Nun, jetzt eine Nachricht (ein modaler div) erscheint und sagt ihm, dass die wirklichen Kilometer für die Straße 0-10, und dass sein Eintrag wird drei Abschnitte der Straße verbinden. Dann wird er drei Tasten zur Auswahl gegeben. Abbrechen, die ihn erlaubt zu gehen und ändert seine Daten, Constrain, die 13,37-10 umwandeln, und außer Kraft setzen, der ermöglicht, ihn zur Eingabe von Daten, dass sowieso.

"Yowza!" Gadget rief und klickte abbrechen zurück und beheben seinen Fehler zu gehen. Nun der nächste Satz von Daten, die er richtig eingegeben wird, so wird eine Bestätigungsmeldung ihm die Änderungen tauchte zeigt er im Begriff war, zu machen und zu fragen, ob es in Ordnung war, um fortzufahren. Nun, leider Inspektor Gadget umgeworfen seine Kaffeetasse, Verstreuen Geröll über seinen Schreibtisch. In seiner Eile es aufzuräumen, klickte er auf „OK“, aber nicht vor seinem Go-Go-Gadget Elektromagnet aus Versehen ein paar Bits auf seinem Computer, die Änderung der Kreis in Form von ARKANSAS zu AKRSANAS, doh!

Hätte die Daten auf dem Server über den Campus gespeichert worden ist, und die einzige Information weitergegeben wurde „OK“ oder „Abbrechen“, dies hätte vermieden werden kann.


Natürlich kann ich immer Validate wieder nach dem "OK", aber es scheint wie eine Hacky Abhilfe.

Wie auch immer, ich hoffe, diese stellt klar!

War es hilfreich?

Lösung

Ich glaube, Sie denken über den Webserver-Cache verwenden. In ASP.NET können Sie Context.Cache zum Speichern von Daten auf dem Server verwenden. Sobald ein Benutzer Cache es ist, kann jeder andere Benutzer auf dem Server auch darauf zugreifen können.

Da die Daten auf dem Server zwischengespeichert wird, möchten Sie den Cache jedes Mal löschen Sie eine Aktualisierungsabfrage auf der DB aufrufen. Dann wird das nächste Mal, wenn Sie die Daten laden, können Sie die Daten im Cache wieder speichern.

Ihre Methode wählen, kontrollieren Sie, ob Cache [key] nicht null ist. Wenn ja, dann laden Sie die Daten aus der DB und dann speichern Sie es auf Cache [key], bevor Sie die Daten zurück. Wenn es nicht null ist, dann laden Sie sich einfach aus dem Cache statt der DB.

Der Schlüssel die Sie verwenden können Sie Ihre Parameter enthalten, so dass Sie die Daten aus dem Cache nicht filtern müssen .... oder der Schlüssel kann nur generisch sein, so speichert er alle Ihre Daten. Dann können Sie eine ausführen LINQ-Abfrage auf den Daten-Filter für Ihre Parameter

Ich hoffe, das hilft, ist.

Andere Tipps

Ich glaube, Sie beziehen sich auf Concurrency . Überprüfen Sie den Link, um loszulegen es auf das Verständnis, wenn es das ist, was Sie fragen. Sie werden wahrscheinlich ein wenig mehr Forschung zu tun haben, auf dem Rücken Ende und Ihre spezifische Situation abhängig. wenn dies wieder, was Sie suchen Sie in pessimistisch Gleichzeitigkeit particullary interessiert sein.

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


EDIT: Nach dem Beispiel zu lesen .... es klingt wie Sie mögen den folgenden, viel Glück tun.

  1. "Sperre" der Datensatz ein pessimistisches concurrency Muster irgendeine Art Verwendung (auf dem db da dort tatsächlich die Daten sind), wenn er durch den Benutzer zugegriffen wird inputing die Daten . Dies ist wie das Bilden der db Datensatz nur lesen.

  2. Wenn der Benutzer ok trifft würden Sie wahrscheinlich zu validieren durch asp.net-Code haben, und wenn die Validierung übergeben wird, aktualisieren Sie die db und Entsperren der db Rekord.

  3. Wenn die Benutzer Treffer abbrechen, nicht die db Datensatz aktualisieren, schalt es einfach.

  4. Wenn der Benutzer die Eingabe zwingen will, dann nur die DB aktualisieren und den db Rekord entsperren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top