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

ADO.NET連接池三方面講解

開(kāi)發(fā) 后端
這里就ADO.NET連接池原理、關(guān)閉連接、ADO.NET連接池與安全三個(gè)方面做出了詳細(xì)的介紹講解,希望可以對(duì)喜歡研究連接池的朋友有幫助。

連接池還是比較常用的,于是我上網(wǎng)收集了很多關(guān)于ADO.NET連接池,在這里分享給大家吧。數(shù)據(jù)庫(kù)連接是一種重要的、有限的、開(kāi)銷(xiāo)昂貴的資源,因此用好連接對(duì)象是任何應(yīng)用的最基本的要求。使用數(shù)據(jù)庫(kù)連接的要點(diǎn)可總結(jié)如下:保存連接字符串應(yīng)注意安全。打開(kāi)連接應(yīng)遲,關(guān)閉連接應(yīng)早。連接字符串是訪問(wèn)數(shù)據(jù)庫(kù)的鑰匙。連接字符串除了說(shuō)明要訪問(wèn)的數(shù)據(jù)之外,還包含了用戶為什么可以訪問(wèn)那些數(shù)據(jù)的身份證明。在執(zhí)行數(shù)據(jù)庫(kù)操作時(shí),用戶身份證明是確定數(shù)據(jù)訪問(wèn)權(quán)限的最重要的因素。

ADO.NET連接池原理

#T#連接池允許我們通過(guò)一個(gè)緩沖池重用現(xiàn)有的連接對(duì)象,避免每次使用連接對(duì)象時(shí)都要新建一個(gè)對(duì)象。采用連接池之后,只要少量的連接對(duì)象就可以滿足大量客戶端的需要。每一個(gè)連接池都與一個(gè)獨(dú)立的連接字符串及其事務(wù)上下文關(guān)聯(lián)。每次打開(kāi)一個(gè)新的連接,數(shù)據(jù)提供者會(huì)嘗試將指定的連接字符串與連接池的字符串進(jìn)行匹配。如果匹配失敗,數(shù)據(jù)提供者創(chuàng)建一個(gè)新的連接并將它加入連接池。連接池被創(chuàng)建之后,除非進(jìn)程結(jié)束,否則不會(huì)被拆除。有人認(rèn)為這種處理方式會(huì)影響性能,其實(shí)不然,維護(hù)一個(gè)不活動(dòng)的或者空的連接池不需要多少開(kāi)銷(xiāo)。

連接池創(chuàng)建之后,系統(tǒng)會(huì)創(chuàng)建一些連接對(duì)象并將它們加入連接池,直至達(dá)到額定的最小連接對(duì)象數(shù)量。以后,系統(tǒng)會(huì)根據(jù)需要新建和加入連接對(duì)象,一直到達(dá)最大連接對(duì)象數(shù)量限額為止。如果程序請(qǐng)求一個(gè)連接對(duì)象時(shí)沒(méi)有空閑的連接對(duì)象可用,且連接池里面的對(duì)象數(shù)量已達(dá)到上限,則請(qǐng)求被放入隊(duì)列,一旦有連接被釋放回緩沖池就立即取出使用。

避免用編程的方式構(gòu)造連接字符串。如果通過(guò)合并多個(gè)輸入數(shù)據(jù)的方式構(gòu)造出連接字符串,很容易給注入式攻擊以可乘之機(jī)。如果必須用到用戶輸入的數(shù)據(jù),務(wù)必進(jìn)行嚴(yán)格的驗(yàn)證。

關(guān)閉連接

關(guān)閉一個(gè)連接時(shí),連接對(duì)象被返回給連接池以便重用,但這時(shí)實(shí)際的數(shù)據(jù)庫(kù)連接并未被拆除。如果禁用了連接池,則實(shí)際的數(shù)據(jù)庫(kù)連接也被關(guān)閉。這里必須強(qiáng)調(diào)的一點(diǎn)時(shí),連接對(duì)象使用完畢后應(yīng)當(dāng)顯式關(guān)閉并將它返回給連接池,不要依靠垃圾收集器來(lái)釋放連接。實(shí)際上,當(dāng)連接對(duì)象的引用超出有效范圍時(shí),連接不一定被關(guān)閉——垃圾收集器的功能是拆除代表物理連接的.NET封裝對(duì)象,但這并不意味著底層的連接也被關(guān)閉了。

調(diào)用Close或Dispose方法可以將連接釋放回連接池。只有當(dāng)生存期結(jié)束或出現(xiàn)嚴(yán)重錯(cuò)誤時(shí),連接對(duì)象才會(huì)被從連接池刪除。

ADO.NET連接池與安全

如果一個(gè)應(yīng)用程序的所有數(shù)據(jù)訪問(wèn)操作都使用同樣的連接字符串,連接池的優(yōu)勢(shì)將發(fā)揮到極限。但是,這只是一種理想化了的狀況,很可能與應(yīng)用程序的其他要求存在沖突。例如,如果只使用一個(gè)連接字符串,要在數(shù)據(jù)庫(kù)這一層次上執(zhí)行安全控制就很困難了。

另一方面,如果讓每一個(gè)用戶分別使用自己的連接字符串(即為每一個(gè)用戶分別設(shè)定數(shù)據(jù)庫(kù)帳戶),勢(shì)必出現(xiàn)大量小型的連接池,許多連接根本不會(huì)被重用。依照慣例,這類(lèi)問(wèn)題的最佳解決方案是尋找兩個(gè)極端之間的一個(gè)適當(dāng)折衷點(diǎn)。我們可以設(shè)置一組具有代表性的公用帳戶,同時(shí)修改存儲(chǔ)過(guò)程,使之接受一個(gè)表示用戶標(biāo)識(shí)的參數(shù),存儲(chǔ)過(guò)程根據(jù)傳入的用戶標(biāo)識(shí)執(zhí)行不同的操作。

責(zé)任編輯:田樹(shù) 來(lái)源: 博客
相關(guān)推薦

2009-11-03 15:58:22

2010-02-24 14:24:35

.NET 4.0

2009-11-03 16:51:04

ADO.NET連接池觀

2009-12-23 09:01:15

ADO.NET連接池

2009-11-13 13:11:37

ADO.NET連接池

2009-11-11 13:59:15

ADO.NET與ADO

2009-12-23 14:53:28

ADO.NET連接池

2009-11-12 09:25:21

ADO.NET連接池

2009-11-11 14:04:14

ADO.NET連接池

2010-01-05 10:11:23

ADO.NET連接池

2015-12-01 17:09:11

金融轉(zhuǎn)型華為

2010-04-28 17:39:26

網(wǎng)絡(luò)負(fù)載均衡

2010-02-25 09:06:40

ADO.NET連接池

2010-09-08 19:35:12

2013-09-13 10:19:27

iOS 7IT

2009-07-20 14:03:43

Ado.net連接池

2009-12-23 09:14:52

ADO.NET連接池

2009-12-30 16:22:58

ADO.NET連接池

2017-11-17 08:27:21

2017-08-25 10:50:13

運(yùn)行多云模式
點(diǎn)贊
收藏

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