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

多層架構如何具體實現

答題得分者是:Rain
richcomp
中階會員


發表:18
回覆:66
積分:51
註冊:2002-10-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-07 19:44:49 IP:61.177.xxx.xxx 未訂閱
這幾天看了李維的MIDAS書,感覺很不錯,想自己用它來改寫我的小型MRP,以前我用的是ADO ORACLE做的兩層,已在成功運行,後臺數據表近100個。 現在我想將一些問題大家討論,希望大家共同進步。 1、SERVER端REMOTEDATAMODULE中,放置一些數據表(用SQLDATASET),是不是每個TABLE都應有一個? 2、因爲資料量大,我想讓客戶端可以查詢,是直接用CLIENTDATASET.commandtext,還是向SERVER端的SQLDATASET.commandtext賦值,PROVIDE中allowcommandtext與否有什麽主要差別 3、我有許多MASTER-DETAIL表,其聯接應在SERVER端還是CLIENT端?SERVER端用戶同時使用會不會衝突 4、一些資料檢查與資料自動填入,(如在收料時,當用戶輸入完采購單號與項次,自動檢查采購單狀况,如正常則將料號、單位、未交量等返回幷自動填入),這應屬企業規則,想放在SERVER端,可資料在APPLYUPDATE時才向SERVER提交,如何解决呢? 5、資料過帳處理應屬企業規則,我如何將用戶目前CLIENTDATASET中的值一筆一筆放到SERVER端執行呢? 可能我的問題多了點,有些可能是簡單的,也可能還有很多問題,希望與大家共勉 發表人 - richcomp 於 2003/03/07 19:47:27
Rain
資深會員


發表:31
回覆:236
積分:268
註冊:2003-02-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-08 23:12:50 IP:218.5.xxx.xxx 未訂閱
以下是我的一點粗淺的看法,有不妥之處還請指正,另外SERVER端我通常用的是ADO元件而非dbExpress,有些地方可能會有點差別。 1,可以所有的資料表只用一個SQLDataSet和DataSetPrivider連接,但這樣如果多用戶同時更新資料時會出現問題,一種解決方法是在更新資料前再傳遞SQL語句,例如在TClientDataSet的BeforeApplyUpdates事件中處理: begin with Sender as TClientDataSet do OwnerData := CommandText; end; 然後在SERVER端TDataSetProvider的BeforeApplyUpdates事件中賦值 begin SQLDataSet.CommandText := OwnerData; end; 如果一個資料表都提供這樣的一個連接,資料表很多(例如你這種情況,近百個)的話可以動態創建、釋放這些TSQLDataSet和TDataSetProvider,不這樣做的話,一個遠端資料一下放那麼元件不大現實。 2,如果直接用TClientDataSet.CommandText,則AllowCommandText屬性需設成True,在第一個問題中如果所有的資料表你只使用一個連接,則只能在TClientDataSet.CommandText中寫SQL語句了,否則有兩種選擇,建議給SQLDATASET.CommandText賦值。 3,主、明細表在用戶端或者伺服器端連接都是可以的,當然同樣的如果在伺服器端連接一個資料表需要提供一個TSQLDataSet。 4,如果把這些放在用戶端可以在TClientDataSet的BeforePost事件中判斷,不符合就直接Abort。放在應用程式伺服器端中可在TDataSetProvider的BeforeApplyUpdates事件中進行處理。
richcomp
中階會員


發表:18
回覆:66
積分:51
註冊:2002-10-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-17 16:46:26 IP:61.177.xxx.xxx 未訂閱
如果我用allowcommandtext, server端用SQLquery作查詢,當多用戶同時使用此Query(SERVER端不需要保留數據集),會不會衝突
jieshu
版主


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-17 18:51:38 IP:203.204.xxx.xxx 未訂閱
引言: 如果我用allowcommandtext, server端用SQLquery作查詢,當多用戶同時使用此Query(SERVER端不需要保留數據集),會不會衝突
如果此DataSetProvider僅供查詢用是不會的,如果會更新資料,可能得分開較好。
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.taconet.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
比爾丐自
初階會員


發表:33
回覆:115
積分:29
註冊:2003-02-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-18 09:59:15 IP:218.17.xxx.xxx 未訂閱
引言: 如果我用allowcommandtext, server端用SQLquery作查詢,當多用戶同時使用此Query(SERVER端不需要保留數據集),會不會衝突
richcomp 你好 我現才接觸Ado﹐且要寫一個MRP,看了你已經用ADO寫完了MRP,所以我想請教一個問題,能否回答如下問題,多謝﹗ http://delphi.ktop.com.tw/topic.php?TOPIC_ID=26557 發表人 - 比爾丐自 於 2003/03/18 10:04:42
paiching
一般會員


發表:0
回覆:1
積分:0
註冊:2003-03-20

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-03-20 07:15:11 IP:61.231.xxx.xxx 未訂閱
為何要用多層呢? 使用 ADO 二層式不但效率,相容性比較好, 設計及維護上也更方便! 如果考慮到線路負載, 可以設 ADODataSet.CursorLocation = clUseServer 就可以把資料集放在 Remote Server, 跟多層式一樣, DCOM, 多層式 問題蠻多的, 除非要用在 IntertNet, 否則是自討苦吃!
系統時間:2024-04-18 21:50:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!