C# 开发票务系统的基本架构问题

C# 开发票务系统的基本架构问题,c#,asp.net,C#,Asp.net,我需要做一个票务系统,我正在研究应用程序的架构,让它非常简单。我必须在一个文本框中显示可用的票号,并在这几个moew文本框下显示一般信息,然后单击“购买”按钮。 注意:票号必须显示在屏幕上,因为它们已与座位号对应。 现在,我感到困惑的问题是 如果我有50张可用的票,一个用户打开网站,他看到票1可用,另一个用户打开网站,他也看到票1可用,因为第一个用户还没有购买该票。现在肯定是第一个按下“购买”按钮的人,他将被分配该票 如果我实现了某种锁定机制,即如果一个用户可以访问一个票证,那么该票证就不能显示

我需要做一个票务系统,我正在研究应用程序的架构,让它非常简单。我必须在一个文本框中显示可用的票号,并在这几个moew文本框下显示一般信息,然后单击“购买”按钮。 注意:票号必须显示在屏幕上,因为它们已与座位号对应。 现在,我感到困惑的问题是

  • 如果我有50张可用的票,一个用户打开网站,他看到票1可用,另一个用户打开网站,他也看到票1可用,因为第一个用户还没有购买该票。现在肯定是第一个按下“购买”按钮的人,他将被分配该票

  • 如果我实现了某种锁定机制,即如果一个用户可以访问一个票证,那么该票证就不能显示给另一个用户。但是,如果已经打开票证进行购买的用户出于任何原因没有购买,甚至没有关闭页面或没有按下取消按钮,该怎么办呢。这意味着在用户执行某些操作之前,票据将被保留,或者我可能会在几分钟后自动刷新页面,但在这几分钟内票据仍将被保留

  • 需要一些适当的解决方案,以便我可以开始实施

    提前谢谢

    我更喜欢方法2。我已经看到了火车座位预订机制问题的实现


    锁定票据,并记住会话中的锁。然后在会话到期时自动解锁锁定的票据。将会话配置为仅持续一分钟。

    我认为其中一个解决方案是与帮助windows服务一起使用。当曾经预订的用户单击book to ticket时,它将在数据库中更新为datetime和用户标识号。在客户端,您可以在10分钟或其他时间后将javascript刷新。同时,在后台运行的Windows服务将检查所有仍处于挂起状态且超过X时间的预订时间,并将更新项目以使其过期。另一个用户的客户端将ping数据库并检查座位是否再次可用,您可以显示用户座位可用。现在,如果第一个用户尝试预订票证,服务器端将再次验证数据库中的状态,并给出需要再次选择票证的消息。您只需为用户提供处理票据所需的最佳时间,如填写表格等。

    使用如何。一个用户将收到错误“已售出”。您的问题是什么?你有什么设计需要我们审查吗?你尝试过的东西有什么特别的问题吗?为什么要建立这个呢?其实它只是一个购物车,而且有很多免费的购物车解决方案,你可以使用,比你自己做的更好?绝对不是选项2-它太复杂了。相反,您应该更加“乐观”,然后向选择了已预订票证的用户显示一个错误。@JoelCoehoorn是的,这是一个购物车,但我列出的问题是,它仍然会出现在任何第三方购物车解决方案中。关于@aquaraga,我不认为这“太复杂”。为什么?