全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2049
推到 Plurk!
推到 Facebook!

多層資料庫應用程式中,一個DataModule如何應付多個不同業務的用戶端?

答題得分者是:mustapha.wang
h@visli
資深會員


發表:103
回覆:429
積分:431
註冊:2004-02-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-05 22:06:47 IP:218.18.xxx.xxx 未訂閱
多層資料庫應用程式中,一個DataModule如何應付多個不同業務的用戶端? 多層資料庫應用系統(採用Corba作為中間件)中,服務端有一個DataModule, DataModule上放置了一個TSQLQuery元件用來查詢資料。服務端中定義了若干個過程或函數,這些過程或函數用來執行不同的業務(資料查詢、插入或更新),假設這些過程函數都是通過同一個TSQLQuery來完成。 現在寫了多個用於實現不同業務的用戶端,每個用戶端調用服務端的不同過程或函數。 我的問題是:如果這些用戶端剛好都是在同一時刻調用服務端的過程或函數,那麼是否會造成衝突? 比如:用戶端A調用服務端中的過程PA,正在用TSQLQuery執行查詢,而剛好用戶端B又調用服務端中的過程PB,也用TSQLQuery執行資料插入操作,這不就會造成衝突了嗎?
------
------------------------
博采眾家之長,奉獻綿薄之力
------------------------
matrix66
一般會員


發表:3
回覆:7
積分:2
註冊:2002-05-19

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-05 23:34:35 IP:219.84.xxx.xxx 未訂閱
在三層架構中, 中間層應該會根據client端的數量產生相對應的RemoteDataModule
pillar62
資深會員


發表:9
回覆:324
積分:271
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-07 08:54:58 IP:210.64.xxx.xxx 未訂閱
你好 我的方式是如果在前端有做資料異動的最好是在appserber的dtatmodule中放一個獨立對應的 query 去做連結,但是如果只有做查詢就沒有關係,可以共用!! Pillar Wang
------
Pillar Wang
h@visli
資深會員


發表:103
回覆:429
積分:431
註冊:2004-02-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-08 11:27:19 IP:222.248.xxx.xxx 未訂閱
引言: 你好 我的方式是如果在前端有做資料異動的最好是在appserber的dtatmodule中放一個獨立對應的 query 去做連結,但是如果只有做查詢就沒有關係,可以共用!! Pillar Wang
如何有很多個應用,那不是要加許多個對應的資料集元件?開銷不就大了?
------
------------------------
博采眾家之長,奉獻綿薄之力
------------------------
pillar62
資深會員


發表:9
回覆:324
積分:271
註冊:2002-04-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-03-08 12:23:46 IP:210.64.xxx.xxx 未訂閱
那倒是還好,因為在apserver裡面放的資料元件,基本上是無狀態的!!所以只有在撈資料的時候才會消耗資源!! Pillar Wang
------
Pillar Wang
h@visli
資深會員


發表:103
回覆:429
積分:431
註冊:2004-02-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-03-09 11:00:16 IP:222.248.xxx.xxx 未訂閱
哪位大大對Delphi自帶的Demos中的資料模組緩衝池有過研究啊?它好像是利用動態創建一定數量的TDataModule,然後輪流使用。但我看得不是太明白。如果應用比較多的話,是不是就會出現長時間等待的問題? C:\Program Files\Borland\Delphi6\Demos\Midas\Pooler\pooler.pas C:\Program Files\Borland\Delphi7\Demos\Corba\Idl2Pas\Midas XML\DMPooler.pas
------
------------------------
博采眾家之長,奉獻綿薄之力
------------------------
mustapha.wang
資深會員


發表:89
回覆:409
積分:274
註冊:2002-03-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-03-10 21:36:20 IP:218.1.xxx.xxx 未訂閱
如果多个TClientDataSet连接到同一个TDCOMConnection,远端只会产生一个RemoteDM元件,那么抓取资料的时候没有问题。 但是保存资料时就可能有问题,因为DataSetprovider产生更新资料的SQL时,可能混乱。如(伪码):    TClientDataSet1,'select * from A',Open; TClientDataset2,'select * from B',Open;//这时RemoteDM的DataSetProvider.DataSet的SQL语句是'select * from B'; 如果TClientDataSet1先ApplyUpdate,那么delta到达RemoteDM时,就会产生Update B....这样的语句,所以会匹配错误。    是不是一定要在RemoteDM上放100个DataSet,不必,只要给DataSetProvider正确的信息就好,可以看看这篇: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=40701 而在RemoteDM实现LoadData和SaveDeta方法,比TClientDataSet连接ProviderName来得更干净。     久病成良医--多试 千人之诺诺,不如一士之谔谔--兼听
------
江上何人初见月,江月何年初照人
系統時間:2024-04-26 9:07:49
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!