ADO.NET 快速入门(十一):链接池

这个示例演示了如何构建一个到数据源的链接池。你能够经过链接池部署高性能的应用程序。本例中使用链接串建立链接池,而且由 SqlConnection 自动管理。
 
            string connString;

            connString = "server=(local);Integrated Security=SSPI;database=northwind;"
                         + "pooling=true;";
            SqlConnection myConnection = new SqlConnection(connString);
            myConnection.Open();
            myConnection.Close();

 

本例中,在构建 SqlConnection 对象时, 在链接串中指定了链接池特性,就像下例中同样。请记住:链接池是隐式的,除非明确禁用,都会自动建立。所以,“True”是 pooling 关键字的默认设置(pooling=true)。
 
String connString;

// Specification in the connection string:
// Please note: Pooling is implicit, you automatically get it unless you disable it. 
//              Therefore, "true" is the default for the pooling keyword (pooling=true).   
// Connection Reset:    False
// Connection Lifetime: 5
// Enlist:              true
// Min Pool Size:       1
// Max Pool Size:       50

connString = "server=(local)\\SQLExpress;Integrated Security=SSPI;database=northwind;" +
             "connection reset=false;" +
             "min pool size=1;" +
             "max pool size=50";

SqlConnection myConnection1 = new SqlConnection(connString);
SqlConnection myConnection2 = new SqlConnection(connString);
SqlConnection myConnection3 = new SqlConnection(connString);

 

如今用代码实如今链接池上使用多个 Connections 对象。首先,从链接池打开2个 Connections 对象而且回收它们。而后,从链接池打开3个 Connections 对象而且回收它们。
 
    public class ConnectionPoolingExample
    {
        public void Run()
        {
            string connString;
            connString = "server=(local);Integrated Security=SSPI;database=northwind;"
                         + "connection reset=false;"
                         + "min pool size=1;"
                         + "max pool size=50";


            SqlConnection myConnection1 = new SqlConnection(connString);
            SqlConnection myConnection2 = new SqlConnection(connString);
            SqlConnection myConnection3 = new SqlConnection(connString);

            // 打开2个链接。一个是从链接池打开(参考 min pool size),另外一个从数据源建立。
            Console.WriteLine("打开2个链接。");
            myConnection1.Open();
            myConnection2.Open();

            // 目前,链接池里有2个和链接串匹配的链接
            Console.WriteLine("返回2个链接到链接池。");
            myConnection1.Close();
            myConnection2.Close();

            // 从链接池取出1个链接
            Console.WriteLine("从链接池打开1个链接。");
            myConnection1.Open();

            Console.WriteLine("从链接池取出第2个链接。");
            myConnection2.Open();

            Console.WriteLine("第3个链接从数据源建立。");
            myConnection3.Open();

            // 回收3个链接到链接池
            Console.WriteLine("回收3个链接到链接池。");
            myConnection1.Close();
            myConnection2.Close();
            myConnection3.Close();
        }
    }

 

链接池模型相似于不经过链接池的链接。可是,当完成一次池链接释放链接回链接池时,调用 Close 方法是很是必要的。
 
原文链接:
相关文章
相关标签/搜索