2010-09-22 87 views

回答

-1

有可能,當前是可取的,可能不是。您正在尋找的技術被稱爲「comet」,並且是服務器推送類型的體系結構。在網絡應用程序中,這違背了當前支持的內容,可靠且易於維護。選項包括從瀏覽器運行網絡服務器,並進行回調和持久的xm​​pp對話,但沒有任何真正有吸引力的,除非你現在絕對需要這種行爲。

HTML 5與web sockets即將到來,應該使這種理想的行爲更容易獲得,但它可能需要幾年才廣泛的支持。

考慮使用ajax輪詢webservice並進行選擇性部分頁面刷新而不是實現真正的http推送體系結構。

+0

他說的是Winforms,而不是Webforms。 – 2010-09-23 00:11:09

+0

哎呀...我的回答完全無關:( – Tahbaza 2010-09-23 01:03:47

0

簡短的回答是否定的。你必須實施某種輪詢機制。

如果此功能對您的應用程序非常重要,SQL Server 2008 R2有一項名爲StreamInsight的技術,它允許您在數據庫級別觀察數據流(甚至在它碰到磁盤之前)並觸發事件理論上它可能會使用一種機制來觸發應用程序中的更新。我相當確定MySQL不包含可比較的技術。

這些也只是「接近實時」。我猜你的意思是你想要數據網格更新,只要有新的數據,這不會是實時的。

0

這在理論上是可能的,但是非常尷尬,並且感覺不太適合使用數據庫。一般來說,數據庫是實時數據的重要來源。如果您需要實時數據,您應該使用實時推送數據源(有一大堆數據源,主要針對財務數據)。

我已經實現了一個使用更新觸發器和本地存儲過程的系統(在SQL服務器中,不是MySQL,但也許你可以做同樣的事情)。本地存儲過程只是一個非託管代碼DLL,它實現了一個特定的接口和一個可以從SQL觸發器中調用的接口。

事件的順序大致如下:

  1. 託管代碼打開文件系統上的約定文件(可以稱之爲「觀察」的文件),與FileSystemWatcher,並設置一個回調,當文件被改變。
  2. 更新觸發器觸發並調用本機存儲過程。
  3. 本機存儲過程「觸摸」監視文件,更新其數據修改字段。
  4. FileSystemWatcher觸發回調,之後我們知道數據已更改,因此我們從數據庫中重新加載它。
0

你不能以簡單的方式做到這一點。但是,有一個SqlDependency類(link),您可以使用它,但不能與mySQL一起使用。如果有人感興趣,(here)是SQL Server文檔的另一個鏈接。

無論如何,你應該真的考慮這個功能是否有必要,因爲它對數據庫效率和網絡流量有巨大的影響。