簡體   English   中英

多個客戶端在服務器上進行函數調用:隔離每個客戶端調用

[英]Function call on server by multiple clients: Isolate each client calls

我的項目是獨立的應用程序,然后我決定將其拆分為客戶端和服務器,因為我需要同時具有強大的CPU使用率和可移植性。 現在,多個客戶端可以連接到一台服務器。

一對一的處理完成這項工作很容易。 現在,我需要通過客戶端請求一次又一次地調用相同的函數和作用域區域

請任何人給我一些提示,我應該如何處理這些操作,我需要知道如何在服務器端將客戶端的進程彼此隔離? 我的通信是異步的,服務器接收到一個請求並啟動了一個新線程。 我認為我傳遞了一個參數,其中一個包含客戶信息,另一個參數作為工作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類,並為每個客戶端調用該函數,並且由於作業已經在運行,因此忽略同一作業的同一客戶端。

由於您沒有過多談論它,因此不參與您的應用程序設計,我認為您的問題對於使用WCF WebServices是理想的。 通過設計使客戶端隔離,因為每個請求都將在其自己的線程中啟動。 您可以將WCF主機創建為獨立的應用程序/ Windows服務。

您可以使用WCF服務包裝通信並將其配置為PerCall服務(這意味着每個請求將與其他請求分開處理)。

因此,您將從同步化內容中清理商務邏輯。 這是最好的方法,因為管理和創建線程並不難實現,但很難正確實現並針對資源消耗進行優化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM