自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何理解ADO.Net Team工作使用說明

開發(fā) 后端
本文向大家介紹ADO.Net Team,可能好多人還不了解ADO.Net Team,沒有關(guān)系,看完本文你肯定有不少收獲,希望本文能教會你更多東西。

對于ADO.Net Team的推出。數(shù)據(jù)庫讀取技術(shù)也由原本的ADO進化為ADO.Net。技術(shù)人員和程序員大大的期盼,ADO.Net較ADO提供了更便捷的數(shù)據(jù)庫讀寫能力以及優(yōu)秀的性能。。。。

Connection Pool是ADO.Net一個用來提高性能的重要功能。但是對于Connection Pool的機制卻很少有文檔涉及,所以對于Connection Pool的排錯,一直都是一個很棘手的問題。對于OLEDB以及ODBC, 連接池是由Driver決定的。對于Oracle的數(shù)據(jù)庫,一般而言,8.0以上的版本都建議使用Oracle提供的ODP.Net。所以此文主要探討一下ADO.Net Team。

Connection Pool 是什么呢 ?
每當(dāng)程序需要讀寫數(shù)據(jù)庫的時候。Connection.Open()會使用ADO.Net Team,數(shù)據(jù)庫會為程序建立一個連接,并且保持打開狀態(tài),此后程序就可以使用T-SQL語句來查詢/更新數(shù)據(jù)庫。當(dāng)執(zhí)行到Connection.Close()后,數(shù)據(jù)庫就會關(guān)閉當(dāng)前的連接。很好,一切看上去都是如此有條不紊。

但是如果我的程序需要不定時的打開和關(guān)閉連接,(比如說 ASP.Net 或是 Web Service ),例如當(dāng)Http Request發(fā)送到服務(wù)器的時候、,我們需要打開Connection 然后使用Select* from Table 返回一個DataTable/DataSet給客戶端/瀏覽器,然后關(guān)閉當(dāng)前的Connection。那每次都Open/Close Connection 如此的頻繁操作對于整個系統(tǒng)無疑就成了一種浪費。ADO.Net Team就給出了一個比較好地解決方法。將先前的Connection保存起來,當(dāng)下一次需要打開連接的時候就將先前的Connection 交給下一個連接。這就是Connection Pool。#t#

Connection Pool 如何工作的?
首先當(dāng)一個程序執(zhí)行Connection.open()時候,ADO.Net Team就需要判斷,此連接是否支持Connection Pool (Pooling 默認(rèn)為True),如果指定為False, ADO.net就與數(shù)據(jù)庫之間創(chuàng)建一個連接(為了避免混淆,所有數(shù)據(jù)庫中的連接,都使用”連接”描述),然后返回給程序。如果指定為True,ADO.net就會根據(jù)ConnectString創(chuàng)建一個Connection Pool,然后向Connection Pool中填充Connection(所有.net程序中的連接,都使用”Connection”描述)。

填充多少個Connection由Min Pool Size (默認(rèn)為0)屬性來決定。例如如果指定為5,則ADO.net會一次與SQL數(shù)據(jù)庫之間打開5個連接,然后將4個Connection,保存在Connection Pool中,1個Connection返回給程序。

當(dāng)程序執(zhí)行到Connection.close() 的時候。如果Pooling 為True,ADO.Net Team就把當(dāng)前的Connection放到Connection Pool并且保持與數(shù)據(jù)庫之間的連接。同時還會判斷Connection Lifetime(默認(rèn)為0)屬性,0代表無限大,如果Connection存在的時間超過了Connection LifeTime,ADO.net就會關(guān)閉的Connection同時斷開與數(shù)據(jù)庫的連接,而不是重新保存到Connection Pool中。(這個設(shè)置主要用于群集的SQL 數(shù)據(jù)庫中,達(dá)到負(fù)載平衡的目的)。如果Pooling指定為False,則直接斷開與數(shù)據(jù)庫之間的連接。

然后當(dāng)下一次Connection.Open() 執(zhí)行的時候,ADO.Net Team就會判斷新的ConnectionString與之前保存在Connection Pool中的Connection的connectionString是否一致。(ADO.Net會將ConnectionString轉(zhuǎn)成二進制流,所以也就是說,新的ConnectionString與保存在Connection Pool中的Connection的ConnectionString必須完全一致。

即使多加了一個空格,或是修改了ADO.Net Team中某些屬性的次序都會讓ADO.Net認(rèn)為這是一個新的連接,而從新創(chuàng)建一個新的連接。所以如果您使用的UserID,Password的認(rèn)證方式,修改了Password也會導(dǎo)致一個Connection,如果使用的是SQL的集成認(rèn)證,就需要保存兩個連接使用的是同一個)。

責(zé)任編輯:chenqingxiang 來源: Sina
相關(guān)推薦

2009-12-18 14:20:26

ADO.NET組件

2009-12-18 15:11:50

ADO.NET類

2009-12-21 14:55:49

ADO.NET對象

2009-12-22 10:43:48

ADO.NET類庫

2009-12-18 13:52:39

ADO.NET設(shè)計器

2009-12-18 17:06:37

ADO.NET 數(shù)據(jù)庫

2009-12-23 14:53:28

ADO.NET連接池

2009-12-29 16:33:35

ADO.Net Tea

2009-12-21 16:07:52

ADO.NET數(shù)據(jù)庫

2009-12-22 16:03:34

ADO.NET Ent

2009-12-21 14:55:49

ADO.NET類庫

2009-12-23 13:23:29

ADO.Net Sql

2009-12-23 09:14:52

ADO.NET連接池

2009-12-31 15:59:13

ADO.NET方案

2009-12-30 15:58:42

ADO.NET數(shù)據(jù)庫編

2009-12-24 09:26:01

ADO.Net Tea

2009-12-18 17:16:47

ADO.NET連接數(shù)據(jù)

2009-12-23 15:13:15

Ado.Net Syb

2009-12-21 14:39:09

ADO.NET技巧

2009-12-21 17:29:43

ADO.NET模型
點贊
收藏

51CTO技術(shù)棧公眾號