objectpool類:
////
物件池//
using
system;
using
system.collections.generic;
using
system.text;
using
system.timers;
using
system.collections;
namespace
objectpool
//////
建立乙個新的物件
///
///物件例項
protected
abstract
t create();
//////
檢查特定物件有效性
///
///物件例項
///是否有效 true or false
protected
abstract
bool
validate(t t);
//////
刪除物件
///
///物件例項
protected
abstract
void
expire(t t);
//////
建構函式
///
internal
objectpool()}}
catch
(exception)}};
}///
///從池中獲取物件
///
///物件例項
internal
t getobjectfrompool()
else}}
catch
(exception)
//新建立物件t =
create();
//設定為正在使用物件
objlocked.add(t, longnow);
}returnt;}
//////
將物件放入池中
///
///物件例項
internal
void
returnobjecttopool(t t)}}
}}dbconn類:
using
system;
using
system.collections.generic;
using
system.text;
using
system.data;
using
system.data.sqlclient;
namespace
objectpool
//////
返回自身物件(singleton)
///
public
static
readonly
dbconn instance
=new
dbconn();
//////
預設連線語句
///
private
static
string
strconnstr =@"
data source=work0249;initial catalog=adventureworks;persist security info=true;user id=sa;password=sa";
//////
連線語句(屬性)
///
public
string
strconnstr
set}
//////
建立資料庫連線物件
///
///已開啟的資料庫連線物件
protected
override
sqlconnection create()
//////
驗證連線狀態
///
///資料庫連線物件
///連線狀態open : true close:false
protected
override
bool
validate(sqlconnection t)
catch
(sqlexception)
}///
///關閉資料庫連線
///
///資料庫連線物件
protected
override
void
expire(sqlconnection t)
catch
(sqlexception)
}///
///從池中獲取資料庫連線
///
///資料庫連線物件
public
sqlconnection borrowdbconn()
catch
(exception ex)
}///
///將連線物件放入池中
///
///資料庫連線物件
public
void
returndbconn(sqlconnection conn)}}
使用示例:
using
system;
using
system.collections.generic;
using
system.text;
using
system.data.sqlclient;
namespace
objectpool
//將物件放入池中
dbconn.returndbconn(conn);
console.read();}}
}
DataSnap資料庫連線池,資料集物件池的應用
傳統的應用伺服器的開發往往是在servermethods單元中拖放一堆tdataset,tdatasetprovider控制項,這是乙個最簡單粗暴的開發方向,往往會造成服務端程式檔案的臃腫 服務執行期間記憶體資源消耗過大的問題。因此這種往應用伺服器中拖放一堆tdataset,tdatasetprov...
執行緒池 資料庫連線池
執行緒池的原理 來看一下執行緒池究竟是怎麼一回事?其實執行緒池的原理很簡單,類似於作業系統中的緩衝區的概念,它的流程如下 先啟動若干數量的執行緒,並讓這些執行緒都處於睡 眠狀態,當客戶端有乙個新請求時,就會喚醒執行緒池中的某乙個睡眠執行緒,讓它來處理客戶端的這個請求,當處理完這個請求後,執行緒又處於...
執行緒池 資料庫連線池
執行緒池原理 先啟動若干數量的執行緒,並讓這些執行緒都處於睡眠狀態,當客戶端有乙個新請求時,就會喚醒執行緒池中的某乙個睡眠執行緒,讓它來處理客戶端的這個請求,當處理完這個請求後,執行緒又處於睡眠狀態。資料庫連線池原理 資料庫連線池的解決方案是在應用程式啟動時建立足夠的資料庫連線,並講這些連線組成乙個...