2012-03-26 23 views
2

我們有一個Web應用程序和一個Windows窗體應用程序。該Web應用程序包含下載鏈接以下載此表單應用程序。使用相同db問題的Web和Windows窗體應用程序

這種形式的應用程序將檢查客戶端機器的權限和驅動器空間等,並將使用一些web服務調用將值更新到全局數據庫。

因此,Web應用程序將持續檢查全局數據庫的狀態,即表單應用程序完成了多少檢查。

因此,只要下載彈出窗口出現表單應用程序下載,Web應用程序就會開始檢查狀態。但是,如果用戶取消下載或者用戶關閉了表單應用程序,那麼在這些情況下,Web應用程序可以停止檢查狀態。

但在我的情況下,即使客戶端取消下載或關閉表單應用程序,Web應用程序也會始終檢查狀態更改。那麼如何避免這種情況呢?

回答

1

您可以嘗試將某些事物當作記錄的一部分或數據庫中的某個事物,因此下次您的Web應用嘗試讀取時會說出位字段,它會知道應該停止檢查。您可以通過您的表單應用程序將該位字段控制爲ON & OFF。然後,您的Web應用程序可以設置一個輪詢機制,每隔一段時間基於比特字段對所有時間進行計時,或者在一段時間後如果還沒有完成,就會經常檢查分貝。

雖然說你的表單應用程序需要能夠呼叫外部世界,你的數據庫是在哪裏找到並更新它,它可以通過很多方式完成,web服務調用,http等等。

更新:

我對延遲迴復表示歉意,但您是否理解我說的話?如果你的winforms應用程序可以調用你的web服務,那麼它可以告訴它存儲一個標誌字段,比如db中的一條記錄,例如你的web應用程序正在輪詢和檢查,然後通過設置該標誌字段你的web應用程序知道停止做任何事情與該記錄,項目。

至於你提到你是擔心:

  • 用戶點擊取消下載:

在這種情況下,你將不會被你的web應用程序,除非用戶設置您的記錄的檢查已第一次下載並運行了您的win-forms應用程序,因此不要開始檢查下載的win-forms應用程序,而是在用戶第一次打開它時開始檢查一次,您可以在啓動winforms應用程序時執行此操作通過調用您的web服務來設置winforms應用程序中的標誌字段。您經常需要一個輪詢機制,就像服務一樣。

  • 當用戶關閉的WinForms應用程序

在這種情況下,你會在終止時/你的WinForms應用程序的緊密打電話給你的web服務,並設置標誌字段沒有檢查記錄,項目更多。

在任何情況下,您都需要進行輪詢,因爲我認爲您將擁有許多用戶,因此您需要監視數據庫以獲取來自Winforms應用程序的傳入消息。另外請注意,由於某些用戶在防火牆後面,他們的機器和私人網絡上的有限安全權限以及您的winforms應用程序可能無法始終能夠調用您的Web服務。

希望有幫助。

+0

是的我正在使用網絡服務來更新值。 – 2012-03-26 05:15:43

+0

請在這裏查看我的更新回覆。 – 2012-03-26 21:46:40

2

我覺得超時是你唯一真正的選擇。基本上網站方面只會在放棄之前檢查一段時間。數據庫中的狀態表應包含「上次更新時間戳」字段。如果狀態不是「完整」,並且當前時間大於該時間戳X秒,則Web服務器會假定該過程已超時。

相關問題