简称即时信息比如:当SQL数据库字段Mess_Status由0变成1后,在ASP.NET 能知道数据库状态发生了变化,从而触发相应事件,千万不要使用 JS+AJAX不断的局部新的,因为用户多,服务器资源承受不了请各路高手过来帮忙,给出思路或者有用的方法
解决方案 »
- VS2010自带的sql 2008 express 的问题...
- 急急急.大家进来看看了。。。
- 动态页面生成静态页面怎么搞?
- 问个简单的问题
- 最新客户端流行什么技术?有大虾指教指教
- FLASH课件网站制作(asp.net,c#),有制作经验的给点儿建议
- 怎么建通过后台建立SqlServer存储过程?最好有例子,谢谢!!
- 有若干文件,类型为txt,pdf,swf,rm,mpeg,MP3等,放在一个文件夹下想实现在线浏览,播放,需要哪些技术?
- 如何只查询出日期字段为null的记录?
- 为什么会出现这样的怪问题呀,大家都来看看,来者散分,回答出问题者高分送上
- vs里效果为何与iis里效果不一致?
- 好久没提问题了,都生疏了,一个表头的问题,在线等!!!
可能我对这种技术不了解,但好像实现不了,在数据库状态发生改变情况下,在ASPX页面没有任何手动触发事件动作,就能体现出,数据库已经发生了变化,
能否提供详细一点你的思路
确实无法由服务器主动给页面发信息。目前的很多反向技术其实也是通过轮询实现,简单点的就是你已经排除掉的方法:Ajax间隔请求----这种方法会产生很多空请求。 所以另一种思路是一个长轮询,一直挂在服务端,模拟一个有效的连接,这样的缺点是每个页面都维持着这样一个'连接'.
public event EventHandler<EventArgs> SqlChangingHandler
定义一个数据库更改事件
当数据库更改完成后注册改事件
然后监视者发现更改后执行改事件
2、6楼的办法也可以,cache的数据库回调选项
3、写一个job来监控数据字段,sql job,程序job都可以
4、也可以用sql job或触发器 修改一个文件,程序监控文件,FileSystemWatcher另外你没有确定是监控一条数据的一个字段,还是多条
你需要测试各个方案,找到场景能接受的最佳方案
在程序里面更改莫个字段后
注册改事件 这样是可以的
protected void a_query_Click(object sender, EventArgs e)
{ bangding();
aabb();
}
public void aabb()
{
string[] ds = HttpRuntime.Cache["BlockedIPCacheKey"] as string[];
if (ds != null)
{
Label4.Text = "来自Cache"+ds[0];
}
else
{
num_status();
}
}
public string[] num_status()
{
string[] value = { }; string sql = @"SELECT ReadID,Read_Status as temp FROM [Mess_Reader] where Read_Status=0"; SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["gft_esp"].ConnectionString);
SqlCommand cmd = new SqlCommand();
try
{
cmd.Connection = conn;
conn.Open();
cmd.CommandText = sql;
SqlDataReader rs = cmd.ExecuteReader();
SqlCacheDependency dependency = new SqlCacheDependency(cmd);//把连接实例cache
List<string> message_content = new List<string>();
while (rs.Read())
{
message_content.Add(rs["temp"].ToString().Trim());
}
rs.Close();
conn.Close();
value = message_content.ToArray();
HttpRuntime.Cache.Insert("BlockedIPCacheKey", value, dependency, Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration);
}
catch (System.Data.SqlClient.SqlException ex)
{
conn.Close();
}
finally
{
conn.Close(); }
return value;
}
谢谢jiuhexuan,给我思路,