2011-06-29 35 views
3

我寫了一個公司範圍內使用的應用程序。許多用戶傾向於讓應用程序24-7開放。隨着市場部門需求的變化,此應用程序不斷髮展。大部分變化都很小,但往往需要快速實施。推銷員經常離開辦公桌或通過電話,因此對講機通告並不總是有效。該應用程序位於網絡文件共享上並且被快速連接到。從應用程序中踢出用戶

我想像的是類似於彈出消息的信息,例如「程序將在五分鐘內退出以進行更新,請立即保存您的更改。」有沒有辦法顯示這個消息,並遠程踢他們從EXE?我想可能只是有一個數據庫值,它會定期檢查是否有更新正在等待,但對我來說這似乎是一個廉價的黑客攻擊。

+3

您是否使用點擊一次部署?您的應用可以每X小時檢查一次更新,然後更新並重新啓動應用。 – Fox32

+2

@ 0A0D:是的,但有點激烈,你不會說嗎? – Yuck

+0

@ 0A0D:將WinForms或WPF應用程序轉換爲ASP.NET是非常有用的。是的,網絡應用通常適用於共享企業環境,但做出這樣的改變是一項艱鉅的任務。 – Randolpho

回答

4

您的數據庫檢查與任何其他檢測一樣好;我個人會建議投票它訂閱的服務,它會做同樣的事情。但是,如果您的應用程序直接連接到數據庫,則最好在數據庫中進行檢查。

但是,您最好使用ClickOnce部署方法。這將需要一個重大的架構變革,但從長遠來看,IMO會是最好的。

+0

它本質上是一個產品數據庫管理應用程序,所以它直接打到db。 – 2011-06-29 19:36:44

+0

@尼克:那麼你最初的想法可能是最適合你的情況。這不是每種情況下的最佳選擇,但在你的獨特情況下,我會說與它一起。如果您可以調整將部署方案更改爲ClickOnce所需的額外時間,那麼稍後您會過得更好,但這是一個可能需要做些調整和/或扭曲的政治決定。 – Randolpho

0

您可以設置一箇中央服務器,以便.exe發送請求以找出更新何時可用。

我建議你看看WCF作爲你的解決方案的框架;這個框架有很多很好的參考資料,以及像這樣的網站上的帖子。您可以在應用程序中啓動一個單獨的線程,每隔X分鐘檢查一次更新。

至於你的具體問題,「有辦法顯示這個消息,並遠程踢它們的EXE?」,是的,這是可能的,但它是更可行的讓程序自動查詢更新。

如果您想關閉它們以進行遠程更新,那麼您必須知道它們在網絡上的位置。如果程序定期聯繫中央數據庫,那麼服務器就不需要知道程序在網絡上的什麼位置,程序可以自動從服務器的任何地方到達服務器。

0

您可以使用諸如RabbitMQ之類的消息系統或任何其他消息系統,並讓應用程序監聽系統中的某個通道。然後,管理應用程序可以向用戶應用程序發送消息,強制它們關閉。

如果這些更改沒有發生重大更改,您可能需要查看ClickOnce這類允許您在用戶運行應用程序時發佈更新的應用程序,儘管用戶將在應用程序重新啓動之前運行舊版應用程序。

0

我沒有得到你卡住的東西。只需創建一個計時器,並在用戶交互時將計時器重置爲例如5分鐘。然後,當計時器觸發時,顯示消息框,並創建另一個計時器,當該計時器觸發時,就殺掉當前進程。

1

可惜它不是一個Web應用程序。部署會很簡單!

無論如何我會做的是這樣的。使應用程序在不活動幾分鐘後將用戶註銷。

兩種方法未保存的工作。什麼也不做,因此如果它們處於非活動狀態時未保存並且將它們記錄下來,它們就會丟失。

當他們工作時,保留了當地的變化日記。當他們由於不活動而被註銷時,日誌記錄會使用日誌將事情恢復原狀。

編輯:防止用戶使用舊版本。使用版本號或內部版本號編寫數據庫字段。如果在db字段中運行版本<版本,則拒絕登錄,和/或重新啓動程序以加載新圖像。

+0

我喜歡在閒置一段時間後將其註銷的想法。在這種情況下真的不會太侵入,因爲只有少數選定的用戶實際上會修改程序中的數據,其餘的只是提取報告等等。我可以將它設置爲一些荒謬的行爲,例如5小時不活動,這樣它會在晚上得到更新。我仍然需要一種方法來立即阻止他們使用該程序,所以這不是我正在尋找的答案,而是一個有用的建議感謝+1。 – Nick

+0

@Nick - 請參閱已編輯的答案以在發生更新後停止用戶使用該程序。 – Matt

0

相當切題的答案,但如果問題是人們離開工作站和登錄,然後看看像www.1e.com nightwatchman這樣的東西,在x不活動時間後關閉電腦。把它賣給你的公司是爲了「爲環保做點貢獻」,並節省了浪費的電力成本。

相關問題