2014-01-06 84 views
2

我是GUI新手,我在客戶端 - 服務器程序中遇到問題。1臺服務器上的多個客戶端

我的程序就像一個「客戶支持」,其中多個客戶端可以同時使用它從不同的計算機。我的問題是,當一個客戶端更改一些信息,它插入數據庫,但另一個客戶端不會看到它除非我爲我的GUI添加一個「刷新」按鈕。

我想gui是動態的,並對不同的客戶操作做出反應。你怎麼能過來這個問題?

編輯: 1. .NET4, 2. SQL服務器, 3.操作的按鈕後點擊happends

+0

您使用的是什麼版本的.NET,您使用什麼來與數據庫對話,您使用的是哪種數據庫軟件,以及大致預期連接到數據庫的客戶端的最大數量是多少?您的選擇取決於這些因素。 –

+0

當他們輸入信息時,它是否在按鈕後面點擊?如果是這樣,您可以刷新數據在數據庫中,然後再次選擇數據。 –

+0

您使用的是什麼客戶端 - 服務器通信?這裏的「服務器」是SQL服務器嗎?或應用程序服務器? –

回答

3

基本上,你有兩個選擇:推或調查。推送(一些中央服務器向所有聽衆宣佈改變)更爲直接,但需要合適的基礎設施。這還取決於您需要支持的客戶端數量以及系統中有多少事件正在通過。就我個人而言,我是redis pub/sub的忠實粉絲(它實際上是我們在stackexchange上使用的實時更新,加上web-sockets)。但在某些情況下,您可以直接通過數據庫提供更改通知(我個人不希望使用此方式)。您也可以使用來自中央應用程序服務器的類似WCF的事件,但這取決於只有一個應用程序服務器,這聽起來對我來說不是一個好主意。

另一個選項是輪詢 - 即讓應用程序自動定期(每分鐘可能)自動查詢系統以查看顯示的數據是否已更改。如果可以的話,使用時間戳/ rowversion是一個便宜的方法。

相關問題