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 方法是很是必要的。
 
原文鏈接:
相關文章
相關標籤/搜索