線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1820
推到 Plurk!
推到 Facebook!

怎樣實現3-tier 的系統對SQL Connection數為1

答題得分者是:jieshu
ivankuo
中階會員


發表:132
回覆:272
積分:95
註冊:2002-11-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-26 09:57:03 IP:61.221.xxx.xxx 未訂閱
小弟用SocketConnection來測試一個簡單的3-tier程式,Client AP在3台不同的機器上面執行,結果用發現效能監視SQL 的User Connections數量為3,這跟一般的C/S是一樣的~~~請問要如何實現ㄋ?? 我是用D7 DBExpress SQL 2000 發表人 - ivankuo 於 2003/12/26 10:11:02
------
ivankuo
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-26 10:18:37 IP:210.65.xxx.xxx 未訂閱
Hi:    在建立 Remote Data Module 時,將 Instancing 設為 Multiple Instance, 若該 Remote Data Module 已經建立,則在該 Remote Data Module 的 程式底下將
initialization
  TComponentFactory.Create(ComServer, TUWEB_SALES002,
    Class_UWEB_SALES002, ciSingleInstance, tmSingle);
end.
改為
initialization
  TComponentFactory.Create(ComServer, TGET_USER_LOGIN_ID,
    Class_GET_USER_LOGIN_ID, ciMultiInstance, tmSingle);
end.
如此一來,AP 僅會開啟一支,但可能還須測試一下效能 -------------------------------- 小弟才疏學淺,若有謬誤請不吝指教 --------------------------------
------
Fishman
ivankuo
中階會員


發表:132
回覆:272
積分:95
註冊:2002-11-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-26 10:24:57 IP:61.221.xxx.xxx 未訂閱
class procedure TSocketAPServer.UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); begin if Register then begin inherited UpdateRegistry(Register, ClassID, ProgID); EnableSocketTransport(ClassID); EnableWebTransport(ClassID); end else begin DisableSocketTransport(ClassID); DisableWebTransport(ClassID); inherited UpdateRegistry(Register, ClassID, ProgID); end; end; initialization TComponentFactory.Create(ComServer, TSocketAPServer, Class_SocketAPServer, ciMultiInstance, tmApartment); end. 我設定的Instancing 為 Multiple Instance ,AP Server程式也只會開一支阿,可是對SQL 的User Connections數量卻因Client AP數量而增加,這樣表示並沒有共用到Remote Data Module 中的SQLConnection。
------
ivankuo
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-12-26 10:59:15 IP:203.204.xxx.xxx 未訂閱
引言: class procedure TSocketAPServer.UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); begin if Register then begin inherited UpdateRegistry(Register, ClassID, ProgID); EnableSocketTransport(ClassID); EnableWebTransport(ClassID); end else begin DisableSocketTransport(ClassID); DisableWebTransport(ClassID); inherited UpdateRegistry(Register, ClassID, ProgID); end; end; initialization TComponentFactory.Create(ComServer, TSocketAPServer, Class_SocketAPServer, ciMultiInstance, tmApartment); end. 我設定的Instancing 為 Multiple Instance ,AP Server程式也只會開一支阿,可是對SQL 的User Connections數量卻因Client AP數量而增加,這樣表示並沒有共用到Remote Data Module 中的SQLConnection。
Multiple Instance是程式只開一支,但RDM會依使用者多寡而增減,才會稱為Multiple Instance,我猜你不是用BDE,才會有這種情況,ADO要用Free這是Help提到的,DBX上次有人談過好像很麻煩。
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.taconet.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
ctvincent
一般會員


發表:10
回覆:10
積分:4
註冊:2003-12-30

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-12-30 12:50:03 IP:61.222.xxx.xxx 未訂閱
[quote] 小弟用SocketConnection來測試一個簡單的3-tier程式,Client AP在3台不同的機器上面執行,結果用發現效能監視SQL 的User Connections數量為3,這跟一般的C/S是一樣的~~~請問要如何實現ㄋ??    在ApServer上,將資料庫連線的元件放置於MainForm上, 而每個RDM上的DataSet在連上MainForm上的這個連線元件, 是不是就可以達到你所想的,只會有一個Connection 這是猜測,沒有實際的測試過……
pgdennis
資深會員


發表:41
回覆:526
積分:443
註冊:2002-05-23

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-01-06 15:26:55 IP:218.163.xxx.xxx 未訂閱
重點在於你用DBEXPRESS,之前有人問過同樣的問題..我是替他找到 一篇文章講dbexprexx 實現connection pool,參考看看 dbExpress 成了多個 Database Connections? http://delphi.ktop.com.tw/topic.php?TOPIC_ID=41326 永遠追不上技術更新的速度
------
星期一,二...無窮迴圈@@
ivankuo
中階會員


發表:132
回覆:272
積分:95
註冊:2002-11-21

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-01-08 15:59:47 IP:61.221.xxx.xxx 未訂閱
這個值得研究看看~~感謝~~ try try see
------
ivankuo
系統時間:2024-04-24 4:02:10
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!