多个客户端在服务器上的函数调用:隔离每个客户端调用

时间:2011-03-24 12:28:46

标签: c# asynchronous client-server tcp-ip

我的项目是独立应用程序,然后我决定将其拆分为客户端&服务器,因为我需要同时强大的CPU使用率和可移植性。现在多个客户端可以连接到一个服务器。

当1比1的处理完成工作时很容易。现在我需要调用相同的功能&范围区域再次和再次同时 - 通过客户要求 -

请任何人都能告诉我如何处理这些操作,我需要知道如何在服务器端隔离客户端的进程?我的通信是异步的,服务器接收请求并启动新线程。我想我传递一个参数,其中一个载有客户信息,另一个参数作为工作ID - 帮助客户回来,客户可能要求多个工作,一些工作比其他工作更快完成 -

我应该在每次调用时实例化Process吗?我可以使用静态方法等,任何解释都会有很大的帮助!

以下是我需要修改的代码部分

class static readonly Data
{
    public variable listOfValues[]
}


class Process
{

    local variable bestValue



    function findBestValue(from, to)
    {
    ...
     if(processResult > bestValue) bestValue = processResult
    ...

    }

    ...

    for(i=0;i<10;i++) startThread(findBestValue(i*1000,i*1000+999));
...
}
  编辑:我想我必须实例化一个   新的Process类并调用   每个客户端的功能并忽略   因为工作已经在运行,所以同一个工作的同一个客户端。

2 个答案:

答案 0 :(得分:2)

没有进入您的应用程序设计,因为您没有多谈它,我认为您的问题是使用WCF WebServices的理想选择。您可以通过设计获得客户端隔离,因为每个请求都将从它自己的线程开始。您可以将WCF主机创建为独立的应用程序/ Windows服务。

答案 1 :(得分:2)

您可以使用WCF服务包装您的通信,并将其配置为PerCall服务(意味着每个请求将与其他请求分开处理)。

所以你要从同步化的东西中清理你的商业逻辑。这是最好的方法,因为管理和创建线程并不难实现,但很难正确实现并优化资源消耗。