新聞中心
ADO.Net Team如何設(shè)置呢?要修改Connection Pool 唯一的方式就是通過設(shè)定ADO.Net Team來完成。此屬性代表是否需要使用到連接池,默認(rèn)為True,如果指定為False,不使用連接池。

創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作與策劃設(shè)計(jì),當(dāng)陽網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:當(dāng)陽等地區(qū)。當(dāng)陽做網(wǎng)站價(jià)格咨詢:18982081108
Pooling (true)When true, the connection is drawn from the appropriate pool, or if necessary, created and added to the appropriate pool.此屬性代表是否需要使用到連接池,默認(rèn)為True,如果指定為False,ADO.Net Team不使用連接池。
這個(gè)屬性表示一個(gè)Connection的有效時(shí)間,如果一個(gè)Connection返回到ConnectionPool的時(shí)候,超過了ADO.Net Team時(shí)間,這個(gè)連接不會(huì)再次放到Connection。當(dāng)下一個(gè)請(qǐng)求發(fā)來時(shí),ADO.Net會(huì)新建一個(gè)Connection。
這個(gè)屬性主要使用于群集的SQL數(shù)據(jù)庫中,用于負(fù)載平衡??赡艽蠹医?jīng)??吹骄W(wǎng)絡(luò)上有很多文檔以及MSDN站點(diǎn)都推薦大家使用using(sqlconnection cn=new sqlconnection()){}這樣的方式來創(chuàng)建Connection,因?yàn)楫?dāng)超過{}后,.net framwork會(huì)自動(dòng)執(zhí)行Connection.dispose()方法,所以能夠確保Connetion被及時(shí)的關(guān)閉。
那么及時(shí)的調(diào)用.dispose()真的這么重要么,如果一個(gè)對(duì)象超出了生存空間,在.ADO.Net Team中不是會(huì)自動(dòng)被GC(垃圾回收器)自動(dòng)清理的么?
這個(gè)問題其實(shí)是由于GC導(dǎo)致的,.net中使用的GC,他對(duì)于工作并不像我們這樣勤奮。ADO.Net Team只有當(dāng)外界環(huán)境極其惡劣的時(shí)候(沒有足夠的內(nèi)容分配的時(shí)候)他才會(huì)動(dòng)手打掃衛(wèi)生(清理不使用的對(duì)象)。所以對(duì)于Connection 即使超出了變量的生命周期,它可能還沒有被GC干掉。#t#
依舊未將Connection返回給Connection Pool。所以這就導(dǎo)致了下一個(gè)連接可能會(huì)有Connection Pool中沒有Available的Connection而從新打開一個(gè)新的連接,無端的浪費(fèi)了多余的性能。所以ADO.Net Team反復(fù)強(qiáng)調(diào)要及時(shí)的關(guān)閉當(dāng)前的連接。一個(gè)最好的方法就是使用using{}block 系統(tǒng)會(huì)在退出{}的時(shí)候自動(dòng)調(diào)用connection.dispose方法,而dispose會(huì)自動(dòng)去執(zhí)行close方法,釋放當(dāng)前的connection。
其實(shí)Connection.dispose方法就是call了一次close方法,所以兩者是等同的。也就是說,如果您及時(shí)的執(zhí)行了connection.close()方法,就沒有必要必須再把connection包裹在一個(gè)using(){}中。如果使用using 是必需的,那么如果程序結(jié)構(gòu)導(dǎo)致我無法使用using(){}來包裹我的Connection,比如說我的ADO.Net TeamConnection是同一個(gè)help類返回的,那我又怎么辦呢?
這是一個(gè)經(jīng)常遇到的問題。在這樣的環(huán)境中,我們無法將整個(gè)connection包裹在一個(gè)connection中。解決這樣的方法有兩個(gè),一個(gè)就是修改您的代碼結(jié)構(gòu)。傳入一個(gè)ConnectionString來返回Connection。另一個(gè)方法就是反復(fù)檢查您的代碼,是否及時(shí)關(guān)閉了ADO.Net Team。因?yàn)镃lose的效果與dispose是相同的。但是如果不使用using(){}這個(gè)及時(shí)關(guān)閉Connection的任務(wù)就等于是交到了我們自己的手上,而不再由.net framework為我們把關(guān)了。
網(wǎng)站標(biāo)題:實(shí)踐ADO.NetTeam相關(guān)學(xué)習(xí)
標(biāo)題來源:http://www.5511xx.com/article/ccshese.html


咨詢
建站咨詢
