关于asp.net 数据推 帮顶有分 本帖最后由 yuehuolong 于 2009-07-15 10:51:01 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你比我强 我听都没没听过 不过听你的表述咋感觉像Ajax实现的呢?加个服务端的线程? 通过数据缓存依赖 SqlDependency,更新数据库更新缓存参考 听说用flash 的socket方法或者使用activex可以实现,不过接触的比较少,所以想问问大家还有什么更好的方法,wuyq11给的数据缓存依赖挺好的~继续等待高手~ 一般就是每隔一段时间客户端去请求服务器段的数据。AJAX还是可以的吧。 同意,这个是缓存的XML,你可以修改下,感觉应该可以的static System.Web.Caching.CacheDependency cache = null;//当文件更改时此对象无效,即重新从文件读取数据 protected void Page_Load(object sender, EventArgs e) { DataSet ds = new DataSet(); if (Cache["xmltable"] == null || cache == null) { ds.ReadXml(Server.MapPath("XMLFile.xml")); //Cache.Insert("xmltable", ds); cache = new System.Web.Caching.CacheDependency(Server.MapPath("XMLFile.xml")); Cache.Insert("xmltable", ds, cache); } else { Response.Write("使用的是缓存的数据!"); ds = (DataSet)Cache["xmltable"]; } GridView1.DataSource = ds; GridView1.DataBind(); //Cache.Remove["xmltable"];//移除缓存的数据 } http 无连接的。浏览器 是不会连接在服务器上, 服务器 也不会连接在服务器上,有了新的内容。服务器 有新内容了推给谁啊? 谢谢大家的关注是这样的,比如一个web聊天室,如果用ajax定时刷新肯定可以实现,并且很简单,但是肯定不止最好的办法,因为如果你刷新时间过快,势必服务器的压力较大,如果刷新过慢,数据又无法很快的得到最新的。最好的办法还是服务器端通知客户端的方法。我目前的方法就是通过刷新的办法,是通过js的setTimeout定时调用ClientScript.GetCallbackEventReference获取服务器端得更新标志(有无最新数据根据标志位不同而定),如果有则出数据库读最新数据进行刷新,如果没有则不刷新。但是现在想寻求别的方法,所以想看看各位大侠是否有别的更好的方法~不过感觉22楼sohighthesky大侠的方法(同wuyq11大师的方法)也很不错,值得应用。 http是无状态的。用户请求完就和服务器断开连接了,服务器没办法推的。只有用户不停的去请求。 用comet模式,所有Web IM都是这样做的。具体来说,就是客户端连接服务器端后不断开,保持HTTP连接,直到服务器端有数据要推送了再立即发送。推送后断开连接,然后客户端重新发起连接。 33楼的方案就是我想找的,不过好像网上都是说的Java的,不知道有没有.net版本的。如果大家有兴趣可以看一看comet模式。 结贴啦,大家有兴趣的看看comet模式~ 百万数据查询及优化! 求一个简单的替换的正则,回答就有分 如何对一个视频文件截取片断和图片-------------急! 关于struct使用的问题 asp.net2(c#)+SQL SERVER2005的web.sitemap问题(思归,小山等高手请进....) 关于禁止外部提交问题 cookies的使用 菜鸟提问 如和 先执行服务器端 后执行客户端代码 100分相送:请教网站压力测试的工具。 用vs.net创建的asp.net怎么出这个问题:未能加载类型“_99down.Global” asp.net 操作 FreeTextBox1 问题 请教大师们一个正则表达式的问题
参考
继续等待高手~
这个是缓存的XML,你可以修改下,感觉应该可以的
static System.Web.Caching.CacheDependency cache = null;//当文件更改时此对象无效,即重新从文件读取数据
protected void Page_Load(object sender, EventArgs e)
{
DataSet ds = new DataSet();
if (Cache["xmltable"] == null || cache == null)
{
ds.ReadXml(Server.MapPath("XMLFile.xml"));
//Cache.Insert("xmltable", ds); cache = new System.Web.Caching.CacheDependency(Server.MapPath("XMLFile.xml"));
Cache.Insert("xmltable", ds, cache);
}
else
{
Response.Write("使用的是缓存的数据!");
ds = (DataSet)Cache["xmltable"];
}
GridView1.DataSource = ds;
GridView1.DataBind(); //Cache.Remove["xmltable"];//移除缓存的数据
}
是这样的,比如一个web聊天室,如果用ajax定时刷新肯定可以实现,并且很简单,但是肯定不止最好的办法,因为如果你刷新时间过快,势必服务器的压力较大,如果刷新过慢,数据又无法很快的得到最新的。最好的办法还是服务器端通知客户端的方法。我目前的方法就是通过刷新的办法,是通过js的setTimeout定时调用ClientScript.GetCallbackEventReference获取服务器端得更新标志(有无最新数据根据标志位不同而定),如果有则出数据库读最新数据进行刷新,如果没有则不刷新。
但是现在想寻求别的方法,所以想看看各位大侠是否有别的更好的方法~不过感觉22楼sohighthesky大侠的方法(同wuyq11大师的方法)也很不错,值得应用。
如果大家有兴趣可以看一看comet模式。
~