我的项目是独立应用程序,然后我决定将其拆分为客户端&服务器,因为我需要同时强大的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类并调用 每个客户端的功能并忽略 因为工作已经在运行,所以同一个工作的同一个客户端。
答案 0 :(得分:2)
没有进入您的应用程序设计,因为您没有多谈它,我认为您的问题是使用WCF WebServices的理想选择。您可以通过设计获得客户端隔离,因为每个请求都将从它自己的线程开始。您可以将WCF主机创建为独立的应用程序/ Windows服务。
答案 1 :(得分:2)
您可以使用WCF
服务包装您的通信,并将其配置为PerCall
服务(意味着每个请求将与其他请求分开处理)。
所以你要从同步化的东西中清理你的商业逻辑。这是最好的方法,因为管理和创建线程并不难实现,但很难正确实现并优化资源消耗。