多層資料庫應用程式中,一個DataModule如何應付多個不同業務的用戶端? |
答題得分者是:mustapha.wang
|
h@visli
資深會員 發表:103 回覆:429 積分:431 註冊:2004-02-13 發送簡訊給我 |
多層資料庫應用程式中,一個DataModule如何應付多個不同業務的用戶端? 多層資料庫應用系統(採用Corba作為中間件)中,服務端有一個DataModule,
DataModule上放置了一個TSQLQuery元件用來查詢資料。服務端中定義了若干個過程或函數,這些過程或函數用來執行不同的業務(資料查詢、插入或更新),假設這些過程函數都是通過同一個TSQLQuery來完成。 現在寫了多個用於實現不同業務的用戶端,每個用戶端調用服務端的不同過程或函數。 我的問題是:如果這些用戶端剛好都是在同一時刻調用服務端的過程或函數,那麼是否會造成衝突?
比如:用戶端A調用服務端中的過程PA,正在用TSQLQuery執行查詢,而剛好用戶端B又調用服務端中的過程PB,也用TSQLQuery執行資料插入操作,這不就會造成衝突了嗎?
------
------------------------ 博采眾家之長,奉獻綿薄之力 ------------------------ |
matrix66
一般會員 發表:3 回覆:7 積分:2 註冊:2002-05-19 發送簡訊給我 |
|
pillar62
資深會員 發表:9 回覆:324 積分:271 註冊:2002-04-15 發送簡訊給我 |
|
h@visli
資深會員 發表:103 回覆:429 積分:431 註冊:2004-02-13 發送簡訊給我 |
|
pillar62
資深會員 發表:9 回覆:324 積分:271 註冊:2002-04-15 發送簡訊給我 |
|
h@visli
資深會員 發表:103 回覆:429 積分:431 註冊:2004-02-13 發送簡訊給我 |
哪位大大對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 發送簡訊給我 |
如果多个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来得更干净。
久病成良医--多试
千人之诺诺,不如一士之谔谔--兼听
------
江上何人初见月,江月何年初照人 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |