首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# 排隊叫號系統中多終端並發出票的處理方案

     編輯:程式設計綜合問答

場景

多個終端機同時請求取號,需保證號碼唯一、順序、無重複。

最佳實踐:數據庫事務

利用數據庫 行級鎖 + 事務 保證原子性,無需應用層複雜鎖或網絡協議。

// 存儲過程或 EF 事務
BEGIN TRAN
    UPDATE TicketCounter SET CurrentNo = CurrentNo + 1 WHERE Id = @CounterId;
    SELECT @NewNo = CurrentNo FROM TicketCounter WHERE Id = @CounterId;
    INSERT INTO TicketLog (CounterId, TicketNo, CreateTime) VALUES (@CounterId, @NewNo, GETDATE());
COMMIT TRAN
RETURN @NewNo

架構建議

  • 採用 C/S + WebService/WCF/gRPC,終端調用統一「取號服務」。
  • 服務端無狀態,水平擴展,數據庫為單點寫入瓶頸可用「號段預分配」優化:每次 +100,終端本地遞增。
  • 避免 Socket 長連接、多線程同步,增加維護成本。

擴展

若需叫號顯示屏同步,引入 SignalR / WebSocket / MQTT 推送號碼變更。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved