delphi中三層結構怎樣設計?一個管理軟體的應用伺服器端需要建多少個Remote Data Module? Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiDB/html/delphi_20061218143848239.html
一個三層管理軟體的應用伺服器端需要建多少個Remote Data Module?
每個資料庫表對應一個Remote Data Module
然後每個Remote Data Module中包括一個ADOConnection、DatasetProvider多個ADOQuery
再對應用戶端一個SocketConnection、ClientDataset、DataSource、DBGrid
我這樣設計合理嗎
這樣不行
一個Remote Data Module就行了
Remote Data Module本身是多線程的,同一時刻,每個訪問者都使用獨立的線程,因此一般一個就夠了。另外,ADOConnection不要放在Remote Data Module上,放在本地Data Module或者應用伺服器的Form上,Remote Data Module上的DataSet如ADOQuery.Connection設定為ADOConnection,也就是說,所有線程的資料訪問公用一個ADOConnection。
暈了,那Remote Data Module上都放哪些控制項?
我看delphi內建的midas例子好像每個小功能(小模組)都對應了一個Remote Data Module,這是怎麼回事?
ADOConnection不要放在Remote Data Module上,放在本地Data Module或者應用伺服器的Form上,Remote Data Module上的DataSet如ADOQuery.Connection設定為ADOConnection,也就是說,所有線程的資料訪問公用一個ADOConnection。
--------------------
純粹亂說, 你這樣做很容易線程鎖死的.
純粹亂說, 你這樣做很容易線程鎖死的.
===============================================================================
你才亂說呢!
覺得阿發伯說的沒錯阿 我的程式就是那樣的 線程鎖死?為什麼
要多個的...
那程式中可能用到幾十個ADOQuery控制項,這幾十個ADOQuery控制項也放到應用伺服器的同一個Remote Data Module中?
那程式中可能用到幾十個ADOQuery控制項,這幾十個ADOQuery控制項也放到應用伺服器的同一個Remote Data Module中?
===============================================================================
正確!
ADOConnection如果放在Remote Data Module上,意味著每個線程都必須對資料庫做一次串連,在使用者少的情況下,問題不大,當客戶量很大時,容易造成資料庫伺服器負擔過重,且執行效率低。公用一個串連,應用伺服器可一次性串連資料庫,效率自然是不言而喻,我都是這麼做的,從沒聽說因公用串連而線程鎖死的