2009-11-16 56 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