2011-03-24 83 views
0

我的項目是獨立的應用程序,然後我決定,因爲我需要在同一時間強大的CPU使用率和可移植性將其分割爲客戶&服務器。現在多個客戶端可以連接到一臺服務器。函數調用:隔離每個客戶端調用

這是很容易當1 1點的處理做了工作。現在,我需要再次在同一時間-via客戶端請求 - 再次調用同一個函數&範圍區域&

請任何人都可以給我一些線索,我應該如何處理這些業務,我需要知道我怎麼可以隔離客戶端'在服務器端相互處理?我的通信是異步的,服務器收到一個請求並啓動一個新的線程。我認爲我傳遞了一個參數,其中一個攜帶客戶端信息,另一個參數作爲工作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)); 
... 
} 

編輯:我想我有實例化一個 新工藝類並調用 功能爲每一個客戶,而忽略 同一客戶端因爲作業已經在運行,所以可以做同樣的工

回答

2

因爲您沒有深入討論它,所以我認爲您的問題對於使用WCF Web服務來說是最理想的。您通過設計獲得客戶端隔離,因爲每個請求都將在其自己的線程中啓動。您可以創建WCF主機作爲獨立的應用程序/ Windows服務。

+0

我覺得現在已經晚了一點點,我就發明了車輪,我用TCP-IP&XML並取得成功。在2.0版本中,我會考慮WCF,但我現在必須找到解決方案。 – 2011-03-24 13:43:47

+0

你說得對,這是一個輪子....它可以是paintful。 – 2011-03-24 13:47:49

2

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

所以你清理的同步化的東西您的樓內設有商務邏輯。這是最好的方法,因爲管理和創建線程並不難實現,但難以正確實施和優化資源消耗。

+0

我沒有WCP經驗,我已經完成了溝通子流程。我需要在並行線程中調用一個函數。 – 2011-03-24 13:46:35

+0

就像拿糖一樣簡單。只需將新的公共WCF服務添加到服務器端,然後將引用添加到客戶端。相信我,使用TCP和XML要簡單得多。你需要30分鐘才能完成工作,而不是更多。 – 2011-03-24 13:50:00

相關問題