簡體   English   中英

通過網絡觸發事件

[英]Firing an event over a network

我將從哪里開始通過網絡觸發事件? 就我而言,當我更改數據庫記錄時,我想通知運行相同應用程序的網絡上的任何其他用戶它已更改。

編輯:

沒什么聰明的,不要激動。 我正在寫一個文檔管理系統,當文檔以任何方式(刪除,簽出,上簽等)進行更改時,我都想“告訴”每個已更改的內容。 我本打算使用FileSystemWatcher來監視服務器上的文件夾,將每個實例簽名為Deleted事件,然后僅在受監視的目錄中創建和刪除文件,但這只是骯臟的,不是嗎? 如您所知,我不是專業程序員:)

您需要什么樣的通知時間? 我將親自讓客戶端計算機輪詢服務器以獲取更新-例如“我最近的更新是在2009年2月17日-從那時以來發生了什么變化?” -通過在實際服務器上實現Web服務或基於簡單套接字的服務器。

否則,如果它是分布式應用程序,則您的“最簡單”的選擇將是UDP廣播-假設它們位於同一子網中,並且不被20度路由器隔開。

您能告訴我們更多有關您的情況嗎?

客戶端應用程序的每個實例可能正在偵聽消息套接字。

當您的服務器應用程序更改數據庫記錄(代表客戶端或出於任何其他原因)時,它還會在每個客戶端的消息隊列中插入“已更改內容”消息。

服務器應用程序可以立即將消息發送到客戶端應用程序-或客戶端應用程序可以輪詢。

讓客戶使用中央應用程序進行注冊。 每當客戶端更新記錄時,它都可以通知中央應用程序,然后由中央應用程序將其廣播到注冊的客戶端。

自己決定傳輸機制,但您可能要考慮使用套接字。

WCF可以幫助您實現這一目標。 我有一台服務器,它會在發生某些情況時向所有客戶端發送並發出警報。

您如何跟蹤文件編輯?

我假設您正在使用數據庫(如果沒有,現在是建立數據庫的好時機)-在這種情況下,我建議編寫一個ASP.NET Web服務(.asmx擴展名-Visual Studio可以使它們非常容易)進行通信使用此數據庫,並告訴客戶端自上次檢查以來是否已修改任何文件。

嘗試在Visual Studio中為服務器創建Web服務,以了解其完成方式。 要在客戶端計算機上使用(“使用”)Web服務,請打開VS項目,右鍵單擊該項目下的“參考”節點,然后選擇“添加Web參考”。

但是,客戶端將需要輪詢Web服務,因為它是一種單向調用響應類型機制。

這樣做的好處是您不必擔心網絡共享等問題。 但是,缺點是,除非已經存在,否則需要具有ASP.NET功能的Web服務器和數據庫引擎。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM