网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > C# > 正文
NET 连接池救生员
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/14
下载{$ArticleTitle}原创论文样式
可以通过从 Performance 对象下拉列表中选择 ".NET CLR Data" 来用图形表示 SqlClient 计数器,如 图 1所示。请注意,您可以通过选择 _global_ 计数器实例来监视所有进程,或者,您可以查看某个特定实例 — 每个池生成自己的一组监视器。性能监视器可列出这些计数器,并将它们作为所选定的性能对象的实例提供。但性能监视器不会公开这些计数器,除非有实例需要它们进行监视。例如,图 1 显示了 .NET CLR Data 性能对象,但没有列出特定实例。这意味着您必须至少创建一个连接,以便使 _global_ 实例连同每个进程的特定实例一起出现。这种行为对于您的代码来说是个问题;您将无法使用 PerformanceCounter 控件来返回其中的任何计数器,直到 ADO.NET 在打开连接时创建这些计数器。所以说,这个规定真有点令人左右为难。当您使用此方法时,因为缺少有效计数器实例,所以会引发异常 — 此时要准备好捕获异常。

您还可以通过使用 SQL Server 性能计数器 "User Connections" 来监视打开的连接的数量。该计数器被列在 Performance 对象下拉列表中的 sql Server: General Statistics 下。我喜欢监视 "User Connections" 值和一些所选定的 .NET CLR Data SqlClient 计数器(我稍后将讨论此内容),因为我可以获得我需要的信息,而不必担心实例。

使用代码来监视性能计数器。当您需要以编程方式监视连接池时,您可以编写代码来监视由 SqlClient 管理的性能计数器 — 这些计数器与 MMC Windows NT 性能监视器管理单元所提供的计数器是相同的。编写执行监视的代码似乎是一件有些令人畏惧的事情。但我已经提供了从 SqlClient 提供程序的内部工作提取这些计数器的例程的快照(作为本文提供的可下载程序之一)。

您可以编写检查 表 2显示的五个计数器的代码。通过利用这五个计数器,您可以实时监视连接池。.NET 预期您会在性能监视器中提供一个类别 — 复制的 performance Object — 并从那些注册到系统的计数器中选择适当的计数器。要访问 SqlClient 计数器,请将该类别设置为 ".NET CLR Data"。

使用 PerformanceCounter 控件。您可能会发现,在设计时向您的应用程序窗体添加 PerformanceCounter 要比手工编写代码来访问性能计数器更加容易。要使用 PerformanceCounter 控件,请从“Visual Studio .NET 工具箱组件”菜单中选择一个 PerformanceCounter,将它拖到您的应用程序窗体,然后设置属性,如 图 2 所示。这些控件工作在 Web 窗体和 WinForms 应用程序中。

因为 PerformanceCounter 控件提供了方便的下拉列表,所以,您可以在设计时看到任何一种性能计数器类别、计数器名称和特定实例 — 您将要运行的实例除外。这意味着您必须使用图 2 显示的方法来捕获应用程序正在使用的池的适当实例。为了回避这个问题,我选择 _global_ 实例。再次说明一下,此方法假设某个应用程序已经至少创建了一个池,因此您需要做好不存在计数器实例时 ADO.NET 引发异常的准备,就像它在不存在池连接时也会引发异常一样。

注意不准确的池计数。因为 SqlClient .NET 数据提供程序中存在 .NET 框架 1.1 尚未解决的错误,所以,性能计数器会在池实际上已经删除时错误地指示池“仍然存在”。我能通过结束 MMC 性能监视器管理单元、然后结束 Visual Studio .NET 来验证池已经不再存在。这些步骤说明,.NET 数据提供程序在创建连接池的进程结束时会正确地删除连接池。显然,这种不准确性降低了性能计数器在监视池方面的有效性,所以我希望 Microsoft 将来能解决这个问题。

计数器不显示的内容

您可能会面临的一个问题是无法从计数器或 SqlClient 属性看到每个池的配置。每个 SqlConnection 对象的 ConnectionString 保存着这些池设置的密钥。因为您不能依赖于默认设置,所以很

  • 下一篇资讯: C# Server Enumerator
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号