2015-09-07 97 views
-1
配置如何處理靜態變量

我爲出席一個C#桌面應用程序當應用程序(桌面C#)局域網

應用程序時,我臺機器上運行它,一切都很好工作正常..

但現在的問題是......我的老闆想要這個應用程序應該在局域網上工作,並且每個客戶端都可以訪問服務器上的應用程序

但我使用了靜態變量,它在運行時存儲了一些值,然後我在下一個表單中使用這些值。

這裏是示例..

上登錄表單的用戶名

被存儲在靜態變量作爲

public static string username; 
username = txtUser.Text.Trim().ToString(); 

和在接下來的形式,其Home Page該用戶名被用作

lblName.Text = Login.username; 

這裏lblName是標籤的名稱和Login的名稱登錄表

當我配置LAN上這個應用程序則可以在同一時間超過一個用戶將被記錄並要訪問的應用程序,然後每個用戶應該看到他/她自己的用戶名....

abc是用戶1和xyz是用戶2

如果兩者都在同一時間登錄然後我想abc看到

lblName.Text = "abc" 

和XYZ看

lblName.Text = "xyz" 

那麼我該怎麼做才能處理這份工作?

我不需要混淆用戶之間的任何信息......

我使用的C#Windows應用程序。

在此先感謝。

+0

這個問題的答案是不使用靜態變量。你需要某種存儲機制,這可以是任何數量的東西(數據庫,本地存儲,noSQL等等)。 TBH如果你希望它*「在網絡上運行」,那麼一個網站將是明智的選擇。我擔心投票過於寬泛。你需要花些時間爲自己研究一個答案,然後在你有一個可回答的問題時回來。 – Liam

+0

當你從局域網運行時,你真的測試過你的應用程序不工作嗎?從服務器運行桌面EXE的每個用戶都可以獲得他們自己的EXE實例 - 您不應該發生「衝突」。 – Ulric

+0

我沒有檢查這在局域網上,但在谷歌我搜查了很多人說我不工作...所以我現在檢查這個.and將很快在這裏編輯我的問題...感謝您的時間 – Waqas

回答

0

我假設你在服務器端使用靜態變量,對吧?

所以,你的問題發生,因爲你使用靜態變量。

在應用程序的所有運行期間,靜態變量在您的類中都是一致的。並且這些字段在可以使用該類的所有進程之間共享。靜態變量是爲此設計的。

作爲一種可能的快速解決方案,您可以生成類似於唯一會話ID的內容。在客戶端登錄到系統期間 - 您只需在客戶端生成該ID,並將其與登錄信息一起發送到服務器。如果認證成功,服務器會將ID存儲在緩存中的一個密鑰。並且緩存的值可以是用戶名和其他需要的對象。

對服務器的每個請求都應該跟隨該ID。所以你的服務器總是知道它是哪個用戶。

如果您需要更詳細的解答,請提供更多關於應用程序網絡結構及其模塊的信息。

+0

至於我知道會議只在基於Web的應用程序,它完全是桌面。實際上,我爲自己建立了這個應用程序,但是當我的老闆經歷它時,他喜歡這個,現在他希望它可以在局域網上...... – Waqas

+0

@Waqas是的,但你可以使用相同的概念,爲什麼不呢?我假設你有Dewsktop應用程序和服務器端應用程序。對? –

+0

是的,但在互聯網上我搜索了很多人說這是行不通的,有人說你應該爲這些靜態變量寫應用程序域...這就是爲什麼我需要專家意見.. – Waqas