ADO.NET 2.0中的查询通知

http://tech.ddvip.com   2008年01月22日    社区交流

内容摘要:学习如何使用ADO.NET 2.0和SQL Server 2005中新的通知技术处理即席数据刷新。

static void Main(string[] args)
{
GetAndProcessData();
UpdateCache();
// wait for user to end program
Console.WriteLine("Press Enter to continue");
Console.ReadLine();
}
static void MyOnChanged(object caller, SqlNotificationEventArgs e)
{
GetAndProcessData();
UpdateCache();
}

  通过几小段文字我们就可以了解在ASP.NET 2.0中可以采用完全相同的方式,使用ASP.NET的Cache类作为数据缓存。

  SqlDependency依靠内置在SQL Server 2005中的分发器建立和客户端的连接以及发送通知消息。分发器使用的是out-of-band通信而不是使用SqlConnection。这也意味着您的客户端必须可以“通过网络到达”SQL Server;防火墙或者网络地址转换可能会妨碍这种通讯。未来的beta版将允许您对端口配置有更多的控制权,从而可以更友好地通过防火墙的限制。可以通过指定SqlDependency构造方法中的参数来完全配置服务器和客户端的通信工作。示例如下:

SqlDependency depend = new SqlDependency(cmd,
null,
SqlNotificationAuthType.None,
SqlNotificationEncryptionType.None,
SqlNotificationTransports.Tcp,
10000);

  SqlDependency的这个构造方法允许您选择不同于默认值的行为。所有可改变行为中最有用的就是服务器用于连接客户端所使用的传输协议。该例中使用的是SqlNotificationTransports.Tcp,服务器可以使用TCP或者HTTP。该参数的默认值是SqlNotificationTransports.Any;这样让服务器来“决定”使用哪个传输协议。如果指定Any,那么当客户端操作系统中包含了核心模式HTTP支持时,服务器将使用HTTP协议,否则使用TCP。Windows Server 2003和Windows XP with SP2都包含了核心HTTP支持。由于消息是通过网络发送的,因此您可以指定使用何种类型的身份验证。目前EncryptionType是一个参数,但在以后的beta版中该参数将被去除。目前两个值默认都是None。

来源:51CTO    责编:豆豆技术应用

正在加载评论...