Ich tue Zahlung Online-System mit asp.net mvc1.0, wie kann ich tun, damit nur eine Person etwas zu kaufen, wenn es auf Lager ist nur ein. In addtion Ich verwende andere Zahlungssystem (wie ebay) in diesem System.Ich meine, wenn ein Produkt auf Lager ist nur ein, und mehr als eine Person, um es in einem Moment zu kaufen, wie kann ich tun, um eine Person zu ermöglichen, kann es Erfolg kaufen und andere kann es nicht mehr kaufen.
Antworten
Zu viele Anzeigen?Sie werden wahrscheinlich Datenbanktransaktionen verwenden müssen, um Ihre Bestellungen zu bearbeiten. Dabei geht es nicht nur um das Sperren eines Objekts (das in diesem Fall ein statisches Objekt sein müsste, damit es von allen Web-Benutzern gemeinsam genutzt werden kann), sondern um den Zugriff auf einen Auftrag in seiner Gesamtheit. Transaktionen sind das, was Sie verwenden müssen.
Außerdem ist es nicht klar, wenn Sie sagen: "Ich verwende andere Zahlungsmittel in diesem System". Das hat keinen Einfluss auf die transaktionale Verwaltung der Bestände für den Verkauf.
Sie müssen Ihrem System eine gleichzeitige Zugriffskontrolle hinzufügen. Sie können zum Beispiel diesen einfachen Algorithmus implementieren:
- Überprüfen Sie die Menge der Objekte, die Sie in Ihrem Geschäft verkaufen möchten.
- Verringern Sie die Menge um die Anzahl der Objekte, die Sie verkaufen möchten
- Bezahlen Sie die Objekte
- wenn die Zahlung in Ordnung ist, wird die Transaktion beendet
- wenn die Zahlung fehlschlägt, führen Sie die Transaktion zurück, erhöhen Sie die Menge und geben Sie das Geld zurück ;)
Wichtig ist Punkt 2, die Aktualisierung der Elementmenge im Speicher mit Hilfe eines optimistischen Überprüfungsalgorithmus. Schreiben Sie zum Beispiel in die WHERE-Bedingung Ihrer SQL-Operation den Wert der Menge, den Sie in Punkt 1 gelesen haben. Wenn jemand diesen Wert ändert, schlägt die Aktualisierung fehl und die Verkaufsoperation muss unterbrochen werden.