我寫一個簡單程式,連接使用ado.net連接資料庫,當打開5個程式時,資料庫顯示有5個連接.
如果pb11寫成一個webservice,里面的連接代碼也是ado.net,客戶端呼叫這個介面.如果我打開20個客戶端,回圈不停地呼叫介面,資料庫連接數一直顯示1個連接.
我想請教的問題是,ado.net連接方式是不是會自動管理資料庫的連接池?如果會的話,為什么C/S直連的程式,打開幾個程式就會有幾個連接??
為什么設計成webservice它又不會每次連接都生成一個連接??
uj5u.com熱心網友回復:
關注一下uj5u.com熱心網友回復:
呵呵,ado.net會自動進行連接池管理的;C/S情況下,你的每個程式都是真實的與后臺資料庫連接,當然有幾個客戶端就會有幾個連接;
而在webservice情況下,前端與資料庫不進行直接的連接,真實與資料庫連接的是IIS,而你的代碼中應該處理了webservice使用資料庫前就會connect,使用完就會disconnect的,一般情況下當然只會有一個連接,即使你沒disconnect,具體有幾個連接也是ado.net處理決定的,但針對的物件都是IIS~~
uj5u.com熱心網友回復:
如果用C/S結構,資料庫連接為長連接,肯定會打開一個程式,多一個連接
webservice為短連接,呼叫后連接就斷了,即使你沒有disconnect,webservice也幫你把連接斷掉了,所以只會顯示一下連接。
uj5u.com熱心網友回復:
個人理解:ws 不應看做是短連接,因為在 ws 的生存期內,連接是不允許斷開的,這一點與 c/s 沒有兩樣;就象是一個 c/s 程式連接資料庫后立即退出,雖然它的運行時間極短,仍須視為長連接。ado.net 是微軟的,所以可以被 iis 的連接池自動托管,連配置作業都免了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/82603.html
標籤:數據庫相關
