2009-11-16 79 views
0

我必須建立一個類似於拍賣網站的網站:如何從數據庫更新每秒?

我有一個倒計時應該運行的項目的詳細頁面。

在這個頁面幾乎每一秒一更新必須有可能不爲用戶回發:

  • coundown必須復位
  • 錢aucton必須更新
  • GridView控件與去年的投標人必須是更新

我應該使用倒計時什麼樣的計時器? 如何從數據庫更新每秒? (Ajax?) 如何更新values/gridView?

回答

4

您可以使用Ajax的一個UpdatePanel。

然而,鑑於性質的「互聯網天氣,」每次更新一秒的這種做法相當激進。

您可以改爲考慮使用Silverlight。您將擁有更多的控制權,並且可以最大限度地減少需要通過網絡傳輸的數據量。實際上,您可以使用原始TCP連接進行長輪詢,以進一步提高可伸縮性。

+0

圍繞此詳細網站的網站完整地在ASP.Net中,我可以使用單個網站Silverlight嗎? 如果數據庫更新爲空,那麼該怎麼辦?例如,我將構造該數據庫,如果沒有更新,則沒有要加載的數據。 – Kovu

+0

是的,您可以將Silverlight用於單個網站,單個頁面或單個頁面的一部分。如果你不需要的話,Silverlight應用甚至不需要UI。 使用原始的TCP連接和長輪詢,呼叫的服務器端部分可以簡單地掛起如果數據庫是空的 - 或返回「稍後再試」的錯誤,或什麼的。另一種方法是使用不帶UI的Silverlight控件,並將長輪詢調用作爲通知的一種形式,以通知您的Ajax代碼某些內容已更改,並且是時候進行更新。 – RickNZ

+0

好的,謝謝。所以讓一個JavaScript定時器倒計時和一個silverlight讓查詢和updatepanel更新,對吧?你有Silverlight和更新面板方法的例子嗎? – Kovu

0

倒計時,你可以使用JavaScript timing events。要訪問數據庫,如果您不想回發,那麼您確實需要通過使用Ajax來訪問數據服務。爲了使事情更容易,我建議你看看任何Javascript庫,如JQuery

0

對於計時器我會用Threading.Timer所以這可以倒計時不間斷地在一個單獨的線程。您也可以使用可執行數據庫處理的TimerCallback delegate。但是,我會對以這樣的速度查詢數據庫的問題保持警惕。

我建議你看看使用Ajax Update Panel單獨更新頁面的倒計時部分,所以你不必刷新整個頁面。

+0

用於線程計時器。我會警惕更新面板中的內容,因爲它會發送大量不需要的html。返回json將不那麼繁忙。 –

+0

比yout,但不是JavaScript計時器作爲一個新的線程少性能?例如,如果您有500個用戶訪問該站點,那麼將啓動500個線程? – Kovu