【发布时间】:2013-02-27 20:58:28
【问题描述】:
我目前正在为 Web 应用程序使用外部 API。当用户单击一个按钮时,我打开连接,进行适当的调用,然后关闭连接。这可以正常工作,但是,在多线程 Web 环境中,当同时单击两次时,应用程序崩溃...这是由于连续调用关闭连接所致。
理想情况下,我想在第一个请求上打开一个连接,然后进行所有调用。如果有一个并发请求进来,并且它看到有一个打开的连接,那么它应该使用它。连接应该然后仅当当前没有处理请求时才关闭。
我开始编写一些代码来实现我想要的,但我想知道是否有任何人知道的特定设计模式来解决这个问题,或者是否有人有任何建议......谢谢!!
【问题讨论】:
-
您使用什么编程语言和平台?我相信大多数平台都支持连接池 - “连接”是什么意思,它是应用程序会话吗?
-
@BorisTreukhov,我正在使用 C# 和 ASP .NET MVC3。我正在使用一些第三方库,它们基本上有 3 个命令:1.ConnectSocket、2.TransferData、3.DisconnectSocket ... 通过连接,我的意思是第三方 API 来打开套接字连接。所以问题在于当连续调用 DisconnectSocket 时,第 3 方库崩溃,这是我在多线程设置中看到的一个问题......就像一个 Web 应用程序。
-
我的第一个想法是连接池加命令模式
-
你不能在调用
DisconnectSocket之前检查连接是否“未关闭”吗?另外你确定这个连接是线程安全的吗? -
在多线程设置中,我会考虑使用基于队列和消息的设置来完全将您的应用程序从底层数据存储中抽象出来,并让您更轻松地进行扩展。
标签: c# multithreading design-patterns