单插槽多客户端架构

时间:2009-02-19 11:54:05

标签: c# multithreading architecture sockets

我必须维护与支付网关的单个持久套接字连接,并使用它来发送财务消息并接收相同的确认。我的应用程序将被各种客户端使用,因此我需要设计一种方法来同时处理它们并处理诸如超时和重试等问题。

现在,我的主要问题是访问套接字...我应该锁定每个消息的发送和recv请求和响应,还是设置一个排队系统并匹配它们?我还将在另一个线程上发送定期回显消息。

哦,我打算用C#来做。对于这个问题,我将不胜感激。

2 个答案:

答案 0 :(得分:1)

你需要一个持久的套接字到支付网关,好的。我认为你的意思是它必须保持联系。

然后,您需要创建一个侦听器套接字来侦听来自客户端的连接。然后充当两者之间的翻译。

我不确定我是通过“锁定插座”理解你的意思。锁定它怎么样?

除非支付网关的协议用于多个并发操作,否则您可能不希望一次发送多个请求。这将意味着某种类型的队列,或者使用某种互斥或信号量来控制访问的每个请求的线程。在大多数情况下,队列更有效。

答案 1 :(得分:1)

我做了这件事(如果我理解正确的话)。我有一台通过套接字连接到某些目标设备的服务器,然后客户端连接到服务器以与不同的目标系统通信。这是(有点)你想要的吗?我有多个客户端通过服务器与同一个套接字进行通信。

在我的服务器中,我保留了已连接客户端列表和已连接目标列表。当客户端请求目标时,我将其添加到基本上是连接字典的矩阵中,因为多个客户端可以同时与一个目标进行通信。然后,服务器完全异步地在客户端和目标之间泵送消息,并使用事务ID来跟踪消息。因此,当目标应答请求时,服务器知道哪个客户端发送答案。

我不确定这是你想要的,但也许我做的事情无论如何都会帮助你。如果我走在正确的轨道上,我可以进一步阐述。