主题:的中间层框架 第一节
主題:<插件式>的中間層框架
時間:2004-12-31 15:00
主講:D10.天地弦
2004-12-31 14:56:15 /:>D10.天地弦(185511468)
開始吧,我們?
2004-12-31 14:57:22 /:>D10.天地弦(185511468)
請大家先看圖
http://www.jqk.net.cn/dkFrameworkWeb/dkFramework_files/dkFramework_frames.htm
用IE打開
昨天發(fā)現(xiàn)用QQ的不行
<圖一>框架運作圖
2004-12-31 15:04:49 /:>D10.天地弦(185511468)
上面就是中間層的框架運作圖
2004-12-31 15:07:10 /:>D10.天地弦(185511468)
然后打開客戶端代碼
2004-12-31 15:09:21 /:>D10.天地弦(185511468)
看看客戶端的代碼
2004-12-31 15:09:38 A1.Aleyn.wu(45198124)
http://www.e-midas.cn/eds/dk.rar
?
2004-12-31 15:10:02 A1.Aleyn.wu(45198124)
D10的框架圖,大家下載來用IE看就可以了。
2004-12-31 15:10:05 /:>D10.天地弦(185511468)
好的,大家把老大那個down一下
2004-12-31 15:10:29 /:>D10.天地弦(185511468)
里面解壓出來,是web頁面,大家在本機上看
2004-12-31 15:11:43 /:>D10.天地弦(185511468)
好了,我們按照從中間層獲取帳套來講講
?
<圖二>?從中間層獲取一個帳套數(shù)據(jù)
2004-12-31 15:12:14 /:>D10.天地弦(185511468)
大家有沒有看到
procedure TFMainForm.BtnGetAccountClick(Sender: TObject);
var
? vData, Msg: OleVariant;
begin
? inherited;
? AddParamToData(vData, 'Type', amtGet);
? if CLDataModule.SocketConnection.AppServer.ProcessData(miAccountMgr, aiAccountMgr, vData, Msg) then
? begin
??? CdsAccount.Data := vData;
??? CdsAccount.Active := true;
? end; //
end;
2004-12-31 15:12:24 /:>D10.天地弦(185511468)
這一段
2004-12-31 15:12:40 /:>D10.天地弦(185511468)
是獲取帳套按鈕的事件代碼
2004-12-31 15:13:24 /:>D10.天地弦(185511468)
ProcessData這個函數(shù)是中間層提供的接口
2004-12-31 15:13:25 D3天之痕若虹(86278566)
調用Server端的ProcessData過程
2004-12-31 15:13:43 /:>D10.天地弦(185511468)
是調用Server端的ProcessData
2004-12-31 15:14:06 /:>D10.天地弦(185511468)
再請大家打開一個Delphi打開Middlelayer.png
2004-12-31 15:14:25 /:>D10.天地弦(185511468)
\MiddleLayer\MiddleLayer.bpg
2004-12-31 15:15:07 /:>D10.天地弦(185511468)
如果可以看到web的看看Data數(shù)據(jù)流程圖
<圖三>參數(shù)Data流向圖
2004-12-31 15:16:10 /:>D10.天地弦(185511468)
Data里面客戶端是放參數(shù)的
2004-12-31 15:16:29 /:>D10.天地弦(185511468)
到模塊里處理后,返回的是客戶端要的數(shù)據(jù)
2004-12-31 15:17:21 /:>D10.天地弦(185511468)
我們現(xiàn)在看到中間層的代碼
2004-12-31 15:17:43 /:>D10.天地弦(185511468)
function TMLRDataModule.ProcessData(ModuleIndex, ActionIndex: Integer;
? var Data, Msg: OleVariant): WordBool;
begin
? try
??? result := TFrameworkServices.ItSelf[ID].ModelService[ModuleIndex].ProcessData(Id, ActionIndex, Data, Msg) = S_OK;
??? result := true;
? except
??? result := false;??? //
? end;
end;
2004-12-31 15:18:08 /:>D10.天地弦(185511468)
大家有看到不
2004-12-31 15:18:11 /:>D10.天地弦(185511468)
這句是在Server.工程里的
75行
unit uMLRDataModule;
2004-12-31 15:19:21 /:>D10.天地弦(185511468)
所有客戶端請求處理的數(shù)據(jù)都通過該函數(shù)進行處理
2004-12-31 15:19:52 西門吹風㊣(48542332)
大家看明白這句嗎?
TFrameworkServices.ItSelf[ID].ModelService[ModuleIndex].ProcessData(Id, ActionIndex, Data, Msg) = S_OK;
2004-12-31 15:20:02 D3天之痕若虹(86278566)
下載剛那文件呀
http://www.e-midas.cn/eds/dk.rar
2004-12-31 15:20:15 hellfire(149902352)
沒看懂
2004-12-31 15:20:46 /:>D10.天地弦(185511468)
大家,先停一下
2004-12-31 15:20:50 乾隆(7891551)
我也沒看懂
2004-12-31 15:21:00 西門吹風㊣(48542332)
TFrameworkServices 是個接口
2004-12-31 15:21:02 /:>D10.天地弦(185511468)
那句我等一下會講的
2004-12-31 15:21:21 /:>D10.天地弦(185511468)
我先想了解一下大家的思路
2004-12-31 15:21:35 /:>D10.天地弦(185511468)
處理數(shù)據(jù)的一個思路
2004-12-31 15:21:43 C03.MUSIC(281361369)
這個跟老大的思路是一樣的吧?
2004-12-31 15:21:44 西門吹風㊣(48542332)
對,估計大家一下很難跟
2004-12-31 15:21:44 D3天之痕若虹(86278566)
聽。。。
2004-12-31 15:21:47 /:>D10.天地弦(185511468)
然后介紹一下我的思路
2004-12-31 15:22:16 /:>D10.天地弦(185511468)
我先說我的思路吧
2004-12-31 15:22:38 /:>D10.天地弦(185511468)
客戶層==>中間層
2004-12-31 15:23:14 西門吹風㊣(48542332)
先聽一下吧
2004-12-31 15:23:17 /:>D10.天地弦(185511468)
首先我們想一想客戶層與中間層是不是需要很多的接口,來實現(xiàn)很多種服務呢
2004-12-31 15:23:29 乾隆(7891551)
是的
2004-12-31 15:23:35 /:>D10.天地弦(185511468)
客戶層==>中間層
首先我們想一想客戶層與中間層是不是需要很多的接口,來實現(xiàn)很多種服務呢
2004-12-31 15:23:45 hellfire(149902352)
Yes
2004-12-31 15:23:45?? 冷俊(76437853)
嗯
2004-12-31 15:23:52 西門吹風㊣(48542332)
對
2004-12-31 15:23:52 00.bit(10910310)
YS
2004-12-31 15:24:05 神王(375867424)
Y
2004-12-31 15:24:24 湖北人(364076660)
是啊
2004-12-31 15:24:26 /:>D10.天地弦(185511468)
計算機只認識0,1我想大家都知道吧
2004-12-31 15:24:42 C03.MUSIC(281361369)
這一句應該是對接口進行統(tǒng)一封裝吧
2004-12-31 15:24:46 乾隆(7891551)
是的
2004-12-31 15:24:55 /:>D10.天地弦(185511468)
0,1,兩個東西,就可以實現(xiàn)各種服務了,
2004-12-31 15:25:18 hellfire(149902352)
go on
2004-12-31 15:25:28 A3.武稀松(42088303)
組合啊
2004-12-31 15:25:42 /:>D10.天地弦(185511468)
所以我想沒有必要,中間層和客戶層,通過很多線路聯(lián)起來
2004-12-31 15:25:50 A3.武稀松(42088303)
嚴重同意
2004-12-31 15:25:52 乾隆(7891551)
你是說客戶端調用中間層的過程和函數(shù),中間層靠返回的0,1來判斷執(zhí)行還是不執(zhí)行?
2004-12-31 15:26:08 西門吹風㊣(48542332)
對
2004-12-31 15:26:23 /:>D10.天地弦(185511468)
我的意思是,中間層對客戶層,只要少量的接口,就可以實現(xiàn)客戶服務
2004-12-31 15:26:58 神王(375867424)
如果業(yè)務量大的話,有如何
2004-12-31 15:27:11 /:>D10.天地弦(185511468)
我來打個如方,以前在學校,上層開會的時候只把所有的人招集起來開會,還是每個班派一個代表去就行了
2004-12-31 15:27:14 乾隆(7891551)
D10:這里的接口可以理解成過程和函數(shù)嗎?
2004-12-31 15:27:20 D3天之痕若虹(86278566)
先聽聽,D10的思路吧
2004-12-31 15:27:30 C03.MUSIC(281361369)
是每個班派一個代表吧
2004-12-31 15:27:41 /:>D10.天地弦(185511468)
是的,每個班派一個代表
2004-12-31 15:28:05 神王(375867424)
這要看情況
2004-12-31 15:28:10 hellfire(149902352)
上層開會肯定是派一個代表吧
2004-12-31 15:28:23 /:>D10.天地弦(185511468)
客戶層和中間層也一樣只有需要少量接口,
2004-12-31 15:28:34 神王(375867424)
繼續(xù)說,
2004-12-31 15:28:38 西門吹風㊣(48542332)
代表就是我們的接口
2004-12-31 15:28:39 乾隆(7891551)
哦,在聽
2004-12-31 15:28:44 /:>D10.天地弦(185511468)
想想客戶層和中間層的通訊,大部分是怎么樣的
2004-12-31 15:28:47 C03.MUSIC(281361369)
就是說應該為中間層也進行分層管理?
2004-12-31 15:28:56 乾隆(7891551)
這里的接口可以理解成過程和函數(shù)嗎??
2004-12-31 15:29:15 初六無云(359062004)
接口就是協(xié)議,過程,函數(shù)也是協(xié)議
2004-12-31 15:29:17 D3天之痕若虹(86278566)
也可以
2004-12-31 15:29:48 /:>D10.天地弦(185511468)
是不是傳遞參數(shù)信息到中間層,中間層根據(jù)這些參數(shù)信息,然后,決定要做什么事,然后需要返回數(shù)據(jù)就返回數(shù)據(jù)到客戶層
2004-12-31 15:29:59 乾隆(7891551)
講通俗點嘛,DELPHI都準備好協(xié)議了直接說是函數(shù)或過程吧
2004-12-31 15:30:03 神王(375867424)
是的
2004-12-31 15:30:13?? 冷俊(76437853)
嗯
2004-12-31 15:30:30 /:>D10.天地弦(185511468)
中間層根據(jù)這些參數(shù)信息,然后,決定要做什么事,然后需要返回數(shù)據(jù)就返回數(shù)據(jù)到客戶層?
2004-12-31 15:30:58 /:>D10.天地弦(185511468)
大伙先跟著我的思路想一想
2004-12-31 15:31:10 神王(375867424)
明白
2004-12-31 15:31:21 乾隆(7891551)
想通了,這里好理解
2004-12-31 15:31:23 西門吹風㊣(48542332)
嗯
2004-12-31 15:31:43 C9. 隨風飄(87450854)
繼續(xù)??
2004-12-31 15:31:47 D3天之痕若虹(86278566)
有些像設計模式的思想....
2004-12-31 15:31:47?? 冷俊(76437853)
我還行?
2004-12-31 15:31:57 乾隆(7891551)
講講如何具體處理客戶發(fā)出請求吧
2004-12-31 15:31:58 A3.武稀松(42088303)
D10是說定義盡量少的接口方法,通過參數(shù)控制中間層的功能調用?
2004-12-31 15:32:05 /:>D10.天地弦(185511468)
像Windows消息一樣,Windows只負責發(fā)送各種消息到應用程序,然后,應用程序根據(jù)消息的代碼做出反應
2004-12-31 15:32:16 西門吹風㊣(48542332)
對,D10就是用到設計模式
2004-12-31 15:32:26 /:>D10.天地弦(185511468)
42088303(A3.武稀松) 15:31:58
D10是說定義盡量少的接口方法,通過參數(shù)控制中間層的功能調用? ==》3哥,是的
2004-12-31 15:32:51 hellfire(149902352)
明白
2004-12-31 15:33:09 D3天之痕若虹(86278566)
其實D10的思路就是。。
在服務端,再分塊管理。。。
2004-12-31 15:33:27 C03.MUSIC(281361369)
A1的那個程序也是這樣
2004-12-31 15:33:34 /:>D10.天地弦(185511468)
我們中間層都通過
?? function ProcessData(ModuleIndex, ActionIndex: Integer; var Data,
????? Msg: OleVariant): WordBool; safecall;
來路客戶端打交道
2004-12-31 15:33:47 /:>D10.天地弦(185511468)
對的,其實就是A1的三層了接口了
2004-12-31 15:33:59 乾隆(7891551)
哦,客戶端就一個函數(shù)啊
2004-12-31 15:34:22 神王(375867424)
只是傳與接
2004-12-31 15:34:28 /:>D10.天地弦(185511468)
大家都明白嗎?
2004-12-31 15:34:30 C9. 隨風飄(87450854)
就象所謂的瘦客戶端?
2004-12-31 15:34:38 西門吹風㊣(48542332)
明白
2004-12-31 15:34:46 C03.MUSIC(281361369)
其實中間層就提供給客戶端一個或幾個接口,具體實現(xiàn)是經(jīng)過封裝了的,這些對客戶沒有用處,對否?
2004-12-31 15:34:47 D3天之痕若虹(86278566)
是的,就是說只要接口統(tǒng)一。。
2004-12-31 15:34:48 神王(375867424)
明白
2004-12-31 15:35:03 B1.斜陽(249208513)
我倒是覺得這么出來客戶端和中間層的調用,有點過于簡單。先聽你講課吧,完事再討論這個問題
2004-12-31 15:35:17 乾隆(7891551)
說錯了吧,是中間層就一個函數(shù)PROcessData于客戶打交道吧
2004-12-31 15:35:32 /:>D10.天地弦(185511468)
??? function ProcessData(ModuleIndex, ActionIndex: Integer; var Data,
????? Msg: OleVariant): WordBool; safecall;
Data 參數(shù)(
2004-12-31 15:36:11 /:>D10.天地弦(185511468)
客戶端發(fā)送請求的時候中間層收到請求可以從Data這個參數(shù)里取參數(shù)
2004-12-31 15:36:13 乾隆(7891551)
D10:這個函數(shù)好復雜啊,給講講啥意思
2004-12-31 15:36:20 /:>D10.天地弦(185511468)
各種參數(shù)
2004-12-31 15:36:32 A1.Aleyn.wu(45198124)
我們中間層都通過
??? function ProcessData(ModuleIndex, ActionIndex: Integer; var Data,
????? Msg: OleVariant): WordBool; safecall;?? <-怎么看都有點熟悉。。。。。。[:D]
2004-12-31 15:36:48 /:>D10.天地弦(185511468)
ModuleIndex是指定要通過那個模塊來處理這個信息,
2004-12-31 15:37:02 /:>D10.天地弦(185511468)
呵呵,是你發(fā)明的東西了,當然熟
2004-12-31 15:37:07 /:>D10.天地弦(185511468)
我只是再炒一下
2004-12-31 15:37:17 西門吹風㊣(48542332)
活學活用
2004-12-31 15:37:19 /:>D10.天地弦(185511468)
ActionIndex是要執(zhí)行的動作了
2004-12-31 15:37:31 /:>D10.天地弦(185511468)
是一個Integer類型
2004-12-31 15:37:37 A1.Aleyn.wu(45198124)
ActionIndex可以不用在參數(shù)里。
2004-12-31 15:37:39 /:>D10.天地弦(185511468)
ActionIndex =1的時候做什么
2004-12-31 15:37:51 /:>D10.天地弦(185511468)
=2的時候做什么
2004-12-31 15:38:00 /:>D10.天地弦(185511468)
這樣協(xié)議就是大家去規(guī)定了
2004-12-31 15:38:01 初六無云(359062004)
提個意見,把這個函數(shù)的參數(shù)用一個類來表示怎樣?
2004-12-31 15:38:07 神王(375867424)
利用消息傳遞機制
2004-12-31 15:38:18 A3.武稀松(42088303)
建議客戶端可以在有一個包裝,可以定義各種方法.在方法里面調用ProcessData.
就像Windows既提供消息,也提供方便調用的API.
2004-12-31 15:38:19 A1.Aleyn.wu(45198124)
函數(shù)一般在三個參數(shù)以內比較好,你這個函數(shù)有改進一下。
2004-12-31 15:38:33 /:>D10.天地弦(185511468)
好
2004-12-31 15:38:38 神王(375867424)
同意A3
2004-12-31 15:38:51 /:>D10.天地弦(185511468)
function TMLRDataModule.ProcessData(ModuleIndex, ActionIndex: Integer;
? var Data, Msg: OleVariant): WordBool;
begin
? try
??? result := TFrameworkServices.ItSelf[ID].ModelService[ModuleIndex].ProcessData(Id, ActionIndex, Data, Msg) = S_OK;
??? result := true;
? except
??? result := false;??? //
? end;
end;
2004-12-31 15:38:53 A3.武稀松(42088303)
D10認為如何
2004-12-31 15:39:30 乾隆(7891551)
接著講這個函數(shù)啊,WordBool什么意思啊[:$]
2004-12-31 15:39:31 /:>D10.天地弦(185511468)
3哥,好啊
2004-12-31 15:39:40 /:>D10.天地弦(185511468)
我功力還不夠
2004-12-31 15:39:49 西門吹風㊣(48542332)
WordBool 布爾型
2004-12-31 15:39:52 A3.武稀松(42088303)
大家在討論么
2004-12-31 15:39:56 /:>D10.天地弦(185511468)
不知道大家有沒有跟上
2004-12-31 15:39:56 神王(375867424)
大哥先接著說
2004-12-31 15:39:57 A1.Aleyn.wu(45198124)
42088303(A3.武稀松) 15:38:18
建議客戶端可以在有一個包裝,可以定義各種方法.在方法里面調用ProcessData.
就像Windows既提供消息,也提供方便調用的API. <-如果D10是繼承我的做法,那就是A3你所說的了。
2004-12-31 15:40:09 B1.斜陽(249208513)
早在A1給出他的代碼的時候,我就覺得客戶端和中間層的模塊綁的有點過于緊密,呵呵,
還沒形成一個好的思路跟A1說,這又有一個人用上這個方法了[:D]
2004-12-31 15:40:36 /:>D10.天地弦(185511468)
大家有沒有跟上?
?
2004-12-31 15:40:44 D3天之痕若虹(86278566)
在聽。。
2004-12-31 15:40:44 初六無云(359062004)
傳一個 command 比較好,還可以自己檢驗
2004-12-31 15:40:58 /:>D10.天地弦(185511468)
function TMLRDataModule.ProcessData(ModuleIndex, ActionIndex: Integer;
? var Data, Msg: OleVariant): WordBool;
begin
? try
??? result := TFrameworkServices.ItSelf[ID].ModelService[ModuleIndex].ProcessData(Id, ActionIndex, Data, Msg) = S_OK;
??? result := true;
? except
??? result := false;??? //
? end;
end;?
2004-12-31 15:41:08 /:>D10.天地弦(185511468)
好我們現(xiàn)在來看這個函數(shù)
2004-12-31 15:41:50 /:>D10.天地弦(185511468)
這里就是中間層處理的東東了
2004-12-31 15:41:52 C9. 隨風飄(87450854)
可惜? 還能看到A1的代碼
2004-12-31 15:41:59 /:>D10.天地弦(185511468)
兄弟,別頂
2004-12-31 15:42:03 乾隆(7891551)
水平高的人你們?yōu)槭裁床幌?#xff24;10樣我偶講課,呵呵
2004-12-31 15:42:13 A3.武稀松(42088303)
不說別的.每種模式都有許多種分支.
D10 繼續(xù)
2004-12-31 15:42:34 神王(375867424)
大哥,繼承
2004-12-31 15:42:44 乾隆(7891551)
接著講這個函數(shù)吧,還是看不懂
2004-12-31 15:42:49 /:>D10.天地弦(185511468)
中間層收到信息后,要做的事就是要找到對應的模塊來處理信息
2004-12-31 15:43:05 乾隆(7891551)
是,這個知道
2004-12-31 15:43:06 D3天之痕若虹(86278566)
ID 如何同步呢?
2004-12-31 15:43:31 C9. 隨風飄(87450854)
然后通過模塊處理后的 DATA 再返回?
2004-12-31 15:43:33 乾隆(7891551)
ID啥意思,
2004-12-31 15:43:50 D3天之痕若虹(86278566)
ItSelf[ID]
2004-12-31 15:43:51 /:>D10.天地弦(185511468)
現(xiàn)在我們來看中間層是如果來做要做的事的
2004-12-31 15:44:33 /:>D10.天地弦(185511468)
現(xiàn)在,我們來看看,這里和A1走的可能不太一樣
2004-12-31 15:44:36 A1.Aleyn.wu(45198124)
D10繼續(xù)。
2004-12-31 15:44:55 乾隆(7891551)
好
2004-12-31 15:45:19 /:>D10.天地弦(185511468)
這里我講一下中間層和模塊之間的幾個接口
2004-12-31 15:45:33 西門吹風㊣(48542332)
unit MLInterface;?
2004-12-31 15:46:30 /:>D10.天地弦(185511468)
? IModelInfo = interface //模塊基本信息接口
??? procedure GetModelInfo(var ModelInfo: OleVariant); stdcall;
??? function GetModelInfoData(): OleVariant; stdcall;
??? function SetModelConfig(FixDataBase: Boolean; ConnString: WideString): HResult; stdcall;
? end;
? IModelService = interface //模塊操作接口
??? function ProcessData(OwnId: Cardinal; ActionIndex: Integer; var Data, Msg: OleVariant): HResult; stdcall;
??? //主程序調用此函數(shù)關閉模塊操作
??? function CloseModel(): HResult; stdcall;
? end;
? IFrameworkService = interface //框架提供接口
??? function GetID(): Cardinal; stdcall;
??? function GetModelService(ModelIndex: Integer): IModelService; stdcall;
??? function GetFrameWorkInfo(ActionIndex: Integer; var Data, Msg: OleVariant): HResult; stdcall;
??? property ModelService[ModelIndex: Integer]: IModelService read GetModelService; default;
? end;
? IFrameworkServices = interface //框架集接口(通過該接口查得到框架服務接口)
??? function GetFrameworkService(_id: Integer): IFrameworkService; stdcall;
??? property FrameworkServices[_id: Integer]: IFrameworkService read GetFrameworkService; default;
? end;
?
2004-12-31 15:47:02 hellfire(149902352)
一個一個來吧!貼得好像有點多[:D]
2004-12-31 15:47:09 /:>D10.天地弦(185511468)
這是中間層的幾個接口
2004-12-31 15:47:20 /:>D10.天地弦(185511468)
好的
? IModelInfo = interface //模塊基本信息接口
??? procedure GetModelInfo(var ModelInfo: OleVariant); stdcall;
??? function GetModelInfoData(): OleVariant; stdcall;
??? function SetModelConfig(FixDataBase: Boolean; ConnString: WideString): HResult; stdcall;
? end;
2004-12-31 15:47:34 /:>D10.天地弦(185511468)
其實這里我多寫了一個函數(shù)
? IModelInfo = interface //模塊基本信息接口
??? function GetModelInfoData(): OleVariant; stdcall;
??? function SetModelConfig(FixDataBase: Boolean; ConnString: WideString): HResult; stdcall;
? end;
2004-12-31 15:48:30 /:>D10.天地弦(185511468)
這個接口就這樣就可以的
2004-12-31 15:48:30 西門吹風㊣(48542332)
獲取模塊信息
2004-12-31 15:48:48 乾隆(7891551)
這是在定義接口吧
2004-12-31 15:48:55 西門吹風㊣(48542332)
對
2004-12-31 15:49:23 /:>D10.天地弦(185511468)
模塊通過實現(xiàn)這個接口,來讓中層間獲取模塊信息
2004-12-31 15:49:38 /:>D10.天地弦(185511468)
定義接口,就是制定協(xié)議
2004-12-31 15:49:51 D3天之痕若虹(86278566)
yes
2004-12-31 15:49:51 /:>D10.天地弦(185511468)
? IModelService = interface //模塊操作接口
??? function ProcessData(OwnId: Cardinal; ActionIndex: Integer; var Data, Msg: OleVariant): HResult; stdcall;
??? //主程序調用此函數(shù)關閉模塊操作
??? function CloseModel(): HResult; stdcall;
? end;
2004-12-31 15:50:05 /:>D10.天地弦(185511468)
好來看第二個接口
2004-12-31 15:50:15 乾隆(7891551)
給我講講調接口與客戶端直接調用通過中間層的函數(shù)又什么好處?
?
2004-12-31 15:50:31 西門吹風㊣(48542332)
先聽吧
2004-12-31 15:50:44 乾隆(7891551)
好吧,基礎太差[:'(]
2004-12-31 15:51:01 /:>D10.天地弦(185511468)
模塊通過實現(xiàn)該接口,來讓中間層執(zhí)行數(shù)據(jù)處理操作
2004-12-31 15:51:03?? 冷俊(76437853)
我好吃力的說
2004-12-31 15:51:19 hellfire(149902352)
明白
2004-12-31 15:51:20 神王(375867424)
聽完了,慢慢去想
2004-12-31 15:51:38 西門吹風㊣(48542332)
對,慢慢消化
2004-12-31 15:51:43 /:>D10.天地弦(185511468)
??? function ProcessData(OwnId: Cardinal; ActionIndex: Integer; var Data, Msg: OleVariant): HResult; stdcall;
這個函數(shù),和中間層提供的給客戶端的差不多
2004-12-31 15:51:53 /:>D10.天地弦(185511468)
只是多了一個OwnId
2004-12-31 15:52:02 /:>D10.天地弦(185511468)
我們先不管,
2004-12-31 15:52:16 神王(375867424)
這凼數(shù)功能是什么
2004-12-31 15:52:21 /:>D10.天地弦(185511468)
知道是用來調用模塊處理數(shù)據(jù)的就行了
2004-12-31 15:52:27 /:>D10.天地弦(185511468)
調用模塊處理數(shù)據(jù)的就行了
2004-12-31 15:52:40 B1.斜陽(249208513)
D10的目的是不是想先通過一個簡單、一致的接口,讓客戶端可以方便地同中間層通訊。
2004-12-31 15:52:48 西門吹風㊣(48542332)
對,具體怎么實現(xiàn),后面講
2004-12-31 15:52:55 /:>D10.天地弦(185511468)
嗯,
2004-12-31 15:53:13 神王(375867424)
先建立通信機制
2004-12-31 15:53:26?? 冷俊(76437853)
HResult 這個什么意思?
2004-12-31 15:53:31 B1.斜陽(249208513)
然后在中間層中,通過實現(xiàn)約定的接口來擴展中間層能提供的服務數(shù)量
2004-12-31 15:53:31 /:>D10.天地弦(185511468)
自己再加模塊的時候就,自己制定ActionIndex的協(xié)議就行了
2004-12-31 15:53:54 /:>D10.天地弦(185511468)
HResult 其實就是一個Integer類型
2004-12-31 15:54:07 /:>D10.天地弦(185511468)
??? //主程序調用此函數(shù)關閉模塊操作
??? function CloseModel(): HResult; stdcall;
2004-12-31 15:54:18 D3天之痕若虹(86278566)
客戶只要告訴服務器,想做什么的。。
而什么的做,由誰(哪個子模塊來完成)。。就由服務端定義實現(xiàn)。。而這個對客戶是不關心的
2004-12-31 15:54:51 /:>D10.天地弦(185511468)
這個接口,是告訴模塊,中間層要關閉了,進行一行必須的釋放工作
2004-12-31 15:54:59 B1.斜陽(249208513)
我感覺這個由誰做好像也是客戶端指定的
2004-12-31 15:55:20 神王(375867424)
應該是
2004-12-31 15:55:26 /:>D10.天地弦(185511468)
是有點這樣的意思
2004-12-31 15:55:46 西門吹風㊣(48542332)
客戶端傳遞ModuleIndex決定?
2004-12-31 15:55:47 /:>D10.天地弦(185511468)
249208513(B1.斜陽) 15:54:59
我感覺這個由誰做好像也是客戶端指定的 -->是客戶端與模塊之樣的協(xié)議一樣
2004-12-31 15:56:00 B1.斜陽(249208513)
而中間層,只是起到一個轉發(fā)的中介的作用
2004-12-31 15:56:07 D3天之痕若虹(86278566)
由誰完成操作請請,應該服務端定義。
2004-12-31 15:56:11 /:>D10.天地弦(185511468)
嗯
2004-12-31 15:56:21 神王(375867424)
明白
2004-12-31 15:56:32 /:>D10.天地弦(185511468)
? IFrameworkService = interface //框架提供接口
??? function GetID(): Cardinal; stdcall;
??? function GetModelService(ModelIndex: Integer): IModelService; stdcall;
??? function GetFrameWorkInfo(ActionIndex: Integer; var Data, Msg: OleVariant): HResult; stdcall;
??? property ModelService[ModelIndex: Integer]: IModelService read GetModelService; default;
? end;
2004-12-31 15:56:39 /:>D10.天地弦(185511468)
再看一個接口
2004-12-31 15:57:11 /:>D10.天地弦(185511468)
框架提供的接口
2004-12-31 15:57:25 神王(375867424)
這個接口實現(xiàn)什么功能
2004-12-31 15:57:34 D3天之痕若虹(86278566)
恩,說說各個函數(shù)的功能
2004-12-31 15:57:40 /:>D10.天地弦(185511468)
中間層會為每個客戶端連接,實現(xiàn)一個這樣的接口
2004-12-31 15:57:58 /:>D10.天地弦(185511468)
這個接口,是給模塊里調用的
2004-12-31 15:58:29 /:>D10.天地弦(185511468)
我先不說吧,后面說
2004-12-31 15:58:45 /:>D10.天地弦(185511468)
? IFrameworkServices = interface //框架集接口(通過該接口查得到框架服務接口)
??? function GetFrameworkService(_id: Integer): IFrameworkService; stdcall;
??? property FrameworkServices[_id: Integer]: IFrameworkService read GetFrameworkService; default;
? end;
2004-12-31 15:58:57 /:>D10.天地弦(185511468)
最后一個接口
2004-12-31 15:59:33 /:>D10.天地弦(185511468)
是中間層為了維護所有的框架集而實現(xiàn)的接口
2004-12-31 15:59:49 乾隆(7891551)
框架服務是指什么啊
2004-12-31 16:00:03 /:>D10.天地弦(185511468)
可以利用該接口來得到一個框架服務接口
2004-12-31 16:00:58 /:>D10.天地弦(185511468)
一個框架就像一個平臺一樣,框架的服務就是為活動在這個平臺上的模塊實現(xiàn)的服務
2004-12-31 16:01:42 乾隆(7891551)
好象明白點了再具體點比方下
2004-12-31 16:01:46 /:>D10.天地弦(185511468)
現(xiàn)在我們再回到
function TMLRDataModule.ProcessData(ModuleIndex, ActionIndex: Integer;
? var Data, Msg: OleVariant): WordBool;
begin
? try
??? result := TFrameworkServices.ItSelf[ID].ModelService[ModuleIndex].ProcessData(Id, ActionIndex, Data, Msg) = S_OK;
??? result := true;
? except
??? result := false;??? //
? end;
end;
2004-12-31 16:01:47 神王(375867424)
是不是就是的到另外一接口
2004-12-31 16:02:03 /:>D10.天地弦(185511468)
==,我想想
2004-12-31 16:02:06 D3天之痕若虹(86278566)
是的...
好比電話主機,誰打入,它會幫助轉到對應的分機號
2004-12-31 16:02:38 乾隆(7891551)
哦框架接口就是這個電話主機,對吧
2004-12-31 16:02:40 神王(375867424)
好比網(wǎng)絡協(xié)議傳輸一樣
2004-12-31 16:02:43 /:>D10.天地弦(185511468)
先按自己的想像來理解一下吧,后面說完應該會明的
2004-12-31 16:03:01 西門吹風㊣(48542332)
按你的思路繼續(xù)
<圖四>中間層與模塊通訊圖
2004-12-31 16:03:17 /:>D10.天地弦(185511468)
這是三個主要的接口
2004-12-31 16:03:41 /:>D10.天地弦(185511468)
現(xiàn)在我們來看中間層是如果來做要做的事的?
2004-12-31 16:03:54 /:>D10.天地弦(185511468)
現(xiàn)在我們來看中間層是如何來做要做的事的
2004-12-31 16:04:04 /:>D10.天地弦(185511468)
??? result := TFrameworkServices.ItSelf[ID].ModelService[ModuleIndex].ProcessData(Id, ActionIndex, Data, Msg) = S_OK;
2004-12-31 16:04:04 乾隆(7891551)
又貼了我就看不到啊
2004-12-31 16:04:29 /:>D10.天地弦(185511468)
是中間層與模塊的通訊里的圖
2004-12-31 16:04:33 /:>D10.天地弦(185511468)
??? result := TFrameworkServices.ItSelf[ID].ModelService[ModuleIndex].ProcessData(Id, ActionIndex, Data, Msg) = S_OK;?
大家可以看明上面這句嗎?
2004-12-31 16:04:54 乾隆(7891551)
不可以
2004-12-31 16:05:21 /:>D10.天地弦(185511468)
看看
TFrameworkServices.ItSelf
是什么樣的函數(shù)
2004-12-31 16:05:22 西門吹風㊣(48542332)
TFrameworkServices.ItSelf[ID] 創(chuàng)建一個實例
2004-12-31 16:05:25 A3.武稀松(42088303)
是不是要查一下,因為如果你的模塊做成可擴充插入的話.可能要先查一下存不存在
2004-12-31 16:05:39 /:>D10.天地弦(185511468)
是的
2004-12-31 16:06:03 hellfire(149902352)
停一下.我看看TFrameworkServices.ItSelf
2004-12-31 16:06:19 /:>D10.天地弦(185511468)
現(xiàn)在我們來看中間層是如何來做要做的事的 (就是要把信息轉發(fā)給模塊),主要是要找到模塊
2004-12-31 16:06:33 /:>D10.天地弦(185511468)
大家看看
TFrameworkServices.ItSelf的實現(xiàn)
2004-12-31 16:07:15 /:>D10.天地弦(185511468)
麻煩貼一下代碼
2004-12-31 16:07:21 西門吹風㊣(48542332)
通過 TFrameworkServices的ModelService 中的ModuleIndex 模塊 的ProcessData 函數(shù)去操作數(shù)據(jù)庫
2004-12-31 16:07:29 D3天之痕若虹(86278566)
class function ItSelf: TFrameworkServices;
{$J+}
class function TFrameworkServices.ItSelf: TFrameworkServices;
const
? FInstance: TFrameworkServices = nil;
begin
? if FInstance = nil then
? begin
??? FInstance := TFrameworkServices(TFrameworkServices.NewInstance());
??? FInstance.Create();
? end;
? result := FInstance;
end;????????? //創(chuàng)建一個實列
{$J-}
2004-12-31 16:07:49 西門吹風㊣(48542332)
注意{$J+}
2004-12-31 16:07:53 /:>D10.天地弦(185511468)
是的
2004-12-31 16:08:01 /:>D10.天地弦(185511468)
?這里用了一個設計模式
2004-12-31 16:08:06 /:>D10.天地弦(185511468)
Singleton 模式
單件模式
2004-12-31 16:08:22 D3天之痕若虹(86278566)
單一模式
2004-12-31 16:08:29 西門吹風㊣(48542332)
設計模式的一種
2004-12-31 16:08:49 hellfire(149902352)
這里慢點,我都還沒看清,就過了
2004-12-31 16:09:19 西門吹風㊣(48542332)
這里開始難以搞懂
2004-12-31 16:09:33 /:>D10.天地弦(185511468)
是在整個框架中,訪問這個函數(shù),得到都是同一個實例
2004-12-31 16:09:42 /:>D10.天地弦(185511468)
還沒有過
2004-12-31 16:09:57 D3天之痕若虹(86278566)
const
? FInstance: TFrameworkServices = nil; //為什么可定成const呢
2004-12-31 16:10:28 /:>D10.天地弦(185511468)
呵呵,不想定義全局變量,就這樣定義了
2004-12-31 16:10:40 hellfire(149902352)
這個函數(shù)在哪個單元
2004-12-31 16:10:56 /:>D10.天地弦(185511468)
FrameworkServiceImp
2004-12-31 16:11:13 /:>D10.天地弦(185511468)
大家可以看明不?
2004-12-31 16:11:26 hellfire(149902352)
Tks.找到了
2004-12-31 16:11:32 hellfire(149902352)
明白
2004-12-31 16:11:49 D3天之痕若虹(86278566)
? if FInstance = nil then
? begin
??? FInstance := TFrameworkServices(TFrameworkServices.NewInstance());
??? FInstance.Create();
? end;
//這個 if 有必要嗎。。。
2004-12-31 16:11:57 /:>D10.天地弦(185511468)
當然有
2004-12-31 16:12:10 D3天之痕若虹(86278566)
直接寫不就可以。。。
你申請時已是nil了
2004-12-31 16:12:19 /:>D10.天地弦(185511468)
第二次就不為Nil了
2004-12-31 16:12:26 西門吹風㊣(48542332)
講一講{j+}
2004-12-31 16:12:28 D3天之痕若虹(86278566)
恩,原來如此
2004-12-31 16:12:32 /:>D10.天地弦(185511468)
hehe
2004-12-31 16:12:35 西門吹風㊣(48542332)
就明白了
2004-12-31 16:12:45 西門吹風㊣(48542332)
不論是{$J+}或{$J-}, 以const VarName = const value; 定義的常數(shù)(
沒有加上型別宣告), 是一個真正的常數(shù), 其它的程序不可以改變其內容。
其實{$J+}時還有一個妙用, 那就是宣告出類似C語言static的變量, 換句話說,
產(chǎn)生了一個與Application相同生命周期的變量。在這種情形下, 變量只在第一
次使用時才會建立, 函數(shù)或程序結束時, 該變量也不會消滅, 下一次再呼叫到這個函數(shù)
或程序時, 我們仍然可以參考到上次執(zhí)行結束時的值。讓我們試一下這個例子:
{$J+}
procedure TForm1.Button1Click(Sender: TObject);
const
i: integer = 0;
begin
ShowMessage(IntToStr(i));
Inc(i);
ShowMessage(IntToStr(i));
end;
第一次執(zhí)行時, 我們分別會看到「0」「1」, 再點一次這個按鈕時, 看到的將是「1」「2」。
2004-12-31 16:12:53 西門吹風㊣(48542332)
太多了,呵呵
2004-12-31 16:12:54 /:>D10.天地弦(185511468)
修改Const變量,要使用{$J+}
2004-12-31 16:13:21 /:>D10.天地弦(185511468)
明了?,這里要過了
2004-12-31 16:13:29 湖北人(364076660)
==
2004-12-31 16:13:30 D3天之痕若虹(86278566)
恩
2004-12-31 16:13:49 神王(375867424)
明白,
2004-12-31 16:14:15 /:>D10.天地弦(185511468)
TFrameworkServices.ItSelf這個就是得到一個TFrameworkServices實例,得到這個實例,是整個框架中唯一的實例
2004-12-31 16:14:30 C06.文/yb(4184443)
D10哥,講了多少了!我剛開完會啊!真暈!
2004-12-31 16:14:45 /:>D10.天地弦(185511468)
你看看記錄
2004-12-31 16:14:52 C06.文/yb(4184443)
哦!
2004-12-31 16:14:55 /:>D10.天地弦(185511468)
我慢慢講,你慢慢跟
2004-12-31 16:15:00 /:>D10.天地弦(185511468)
TFrameworkServices.ItSelf這個就是得到一個TFrameworkServices實例,得到這個實例,
是整個框架中唯一的實例?
2004-12-31 16:15:02 C06.文/yb(4184443)
哦!
2004-12-31 16:15:19 /:>D10.天地弦(185511468)
明這句話了,就明了剛剛那段
2004-12-31 16:15:54 /:>D10.天地弦(185511468)
我繼續(xù)了
2004-12-31 16:15:59 /:>D10.天地弦(185511468)
? TFrameworkServices = class(TdkObjectList, IFrameworkServices)
? private
??? function GetFrameworkService(_id: Integer): IFrameworkService; stdcall;
? public
??? constructor Create(); //
??? class function ItSelf: TFrameworkServices;
? public
??? property FrameworkServices[_id: Integer]: IFrameworkService read GetFrameworkService; default;
? end;??????? //
?
2004-12-31 16:16:09 /:>D10.天地弦(185511468)
我們來看看這個類
2004-12-31 16:16:20 D3天之痕若虹(86278566)
就是說
class function TFrameworkServices.ItSelf: TFrameworkServices;
只真正創(chuàng)建一個實例?
2004-12-31 16:16:28 /:>D10.天地弦(185511468)
嗯
2004-12-31 16:16:36 /:>D10.天地弦(185511468)
看完了沒有,這個類
2004-12-31 16:16:50 /:>D10.天地弦(185511468)
這里和A1的不太一樣
2004-12-31 16:17:05 乾隆(7891551)
崇拜死了,D10delphi這么精通了啊
2004-12-31 16:17:09 /:>D10.天地弦(185511468)
就是查找模塊這個功能
2004-12-31 16:17:18 /:>D10.天地弦(185511468)
暈
2004-12-31 16:17:29 /:>D10.天地弦(185511468)
應該是各位老大,
2004-12-31 16:17:38 西門吹風㊣(48542332)
繼續(xù)
2004-12-31 16:17:40 /:>D10.天地弦(185511468)
TFrameworkServices.ItSelf[ID]
2004-12-31 16:18:01 /:>D10.天地弦(185511468)
這一句和
TFrameworkServices.ItSelf.FrameworkServices[ID] 一樣的
2004-12-31 16:18:05 /:>D10.天地弦(185511468)
大家明不
2004-12-31 16:18:45 /:>D10.天地弦(185511468)
知道,3弟,你講一下
2004-12-31 16:19:05 D3天之痕若虹(86278566)
class function ItSelf: TFrameworkServices;
定義的類型是一樣的。。。
2004-12-31 16:19:30 /:>D10.天地弦(185511468)
TFrameworkServices.ItSelf這一部分可以不用講了解
2004-12-31 16:19:42 /:>D10.天地弦(185511468)
TFrameworkServices.ItSelf這一部分可以不用講了
2004-12-31 16:20:05 /:>D10.天地弦(185511468)
3弟,講一下
2004-12-31 16:20:09 /:>D10.天地弦(185511468)
TFrameworkServices.ItSelf[ID]
這一句和
TFrameworkServices.ItSelf.FrameworkServices[ID]
一樣的
2004-12-31 16:20:24 hellfire(149902352)
是不是跟FieldByName和Fields[]一個意思
2004-12-31 16:20:32 D3天之痕若虹(86278566)
我看一下
2004-12-31 16:20:57 /:>D10.天地弦(185511468)
hellfire我沒有看,應該差不多
2004-12-31 16:21:30 乾隆(7891551)
TFrameworkServices.ItSelf[ID] 這句作用是什么啊,通俗點說下啊
2004-12-31 16:22:00 神王(375867424)
這兩句都在上面的CLASS中,對嗎
2004-12-31 16:22:09 神王(375867424)
TFrameworkServices.ItSelf[ID]
這一句和
TFrameworkServices.ItSelf.FrameworkServices[ID]
一樣的
2004-12-31 16:22:12 /:>D10.天地弦(185511468)
我來說吧
2004-12-31 16:22:30?? 冷俊(76437853)
TFrameworkServices.ItSelf[ID] 這句作用是什么啊,通俗點說下啊
?
2004-12-31 16:22:37 /:>D10.天地弦(185511468)
TFrameworkServices.ItSelf是得到一個實例大家都知道了
2004-12-31 16:22:47 /:>D10.天地弦(185511468)
TFrameworkServices.ItSelf.FrameworkServices[ID]?
2004-12-31 16:23:04 B1.斜陽(249208513)
var
? ts: TStringList;
begin
? ts := TStringList.Create;
? ts.Add('aaaaa');
? Caption := ts[0];
? ts.Free
end;
2004-12-31 16:23:04 D3天之痕若虹(86278566)
TFrameworkServices.ItSelf[ID]
TFrameworkServices.ItSelf.FrameworkServices[ID]
都 返回一個IFrameworkService有接口?
2004-12-31 16:23:06 /:>D10.天地弦(185511468)
FrameworkServices是這個實例的一個屬性
2004-12-31 16:23:11 /:>D10.天地弦(185511468)
是的
2004-12-31 16:23:25 /:>D10.天地弦(185511468)
嗯和TStringList一樣的
2004-12-31 16:23:33 B1.斜陽(249208513)
知道這個是啥意思吧,和D10的用法是一樣的
2004-12-31 16:23:35 神王(375867424)
剛聽掉了一點,有點接不上了
2004-12-31 16:23:35 /:>D10.天地弦(185511468)
真高興,看到B1還在
2004-12-31 16:24:01 /:>D10.天地弦(185511468)
? TFrameworkServices = class(TdkObjectList, IFrameworkServices)
? private
??? function GetFrameworkService(_id: Integer): IFrameworkService; stdcall;
? public
??? constructor Create(); //
??? class function ItSelf: TFrameworkServices;
? public
??? property FrameworkServices[_id: Integer]: IFrameworkService read GetFrameworkService; default;
? end;??????? //
2004-12-31 16:24:14 /:>D10.天地弦(185511468)
這上屬性,你們看看property FrameworkServices[_id: Integer]: IFrameworkService read GetFrameworkService; default;
?
2004-12-31 16:24:18 /:>D10.天地弦(185511468)
這一句
2004-12-31 16:24:28 神王(375867424)
看到了
2004-12-31 16:24:30 乾隆(7891551)
哪點和Tstringlist的用法一樣啊,沒看出來
2004-12-31 16:24:51 /:>D10.天地弦(185511468)
249208513(B1.斜陽) 16:23:04
var
? ts: TStringList;
begin
? ts := TStringList.Create;
? ts.Add('aaaaa');
? Caption := ts[0];
? ts.Free
end;?
2004-12-31 16:25:00 B1.斜陽(249208513)
ItSelf[ID]
同
ts[0]
2004-12-31 16:25:06 /:>D10.天地弦(185511468)
上面的ts[0]就是ts.items[0]
2004-12-31 16:25:22 B1.斜陽(249208513)
是ts.Strings[0]
2004-12-31 16:25:27 /:>D10.天地弦(185511468)
呵呵
2004-12-31 16:25:29 /:>D10.天地弦(185511468)
對
2004-12-31 16:25:35 乾隆(7891551)
哦,明白了
2004-12-31 16:25:53 B1.斜陽(249208513)
主要是default關鍵字,如果不知道,看看語法書對default的定義吧
2004-12-31 16:26:06 /:>D10.天地弦(185511468)
對主要是Default關鍵字
2004-12-31 16:26:20 西門吹風㊣(48542332)
講一下
2004-12-31 16:26:26 /:>D10.天地弦(185511468)
在屬性上加一個Default關鍵字,就可以像數(shù)組一樣訪問了
2004-12-31 16:26:36 D3天之痕若虹(86278566)
property FrameworkServices[_id: Integer]: IFrameworkService read GetFrameworkService; default;
-----
是保持FrameworkServices[_id: Integer]的持久性...
2004-12-31 16:27:47 乾隆(7891551)
哦,是不是加個Default就可以按照[0]取第幾個方法了
2004-12-31 16:27:52 /:>D10.天地弦(185511468)
對的
2004-12-31 16:27:59 /:>D10.天地弦(185511468)
property FrameworkServices[_id: Integer]: IFrameworkService read GetFrameworkService; default;
2004-12-31 16:28:09 /:>D10.天地弦(185511468)
看看類的這個屬性
2004-12-31 16:28:10 hellfire(149902352)
了解[:D]
2004-12-31 16:28:12 /:>D10.天地弦(185511468)
加了一個Default
2004-12-31 16:28:22 /:>D10.天地弦(185511468)
加了一個Default
2004-12-31 16:28:26 神王(375867424)
明白
2004-12-31 16:28:30 /:>D10.天地弦(185511468)
呵呵,以前我也不知道,A1罵出來的
2004-12-31 16:28:51 C03.MUSIC(281361369)
給A1記一等功
2004-12-31 16:29:11 神王(375867424)
我請他[coffee]
2004-12-31 16:29:12 /:>D10.天地弦(185511468)
TFrameworkServices.ItSelf[ID]這樣就是調用了
2004-12-31 16:29:23 D3天之痕若虹(86278566)
[:P]
2004-12-31 16:29:25 B1.斜陽(249208513)
要想知道樹有多高,不要去看一片葉子,要站在遠處去看樹的整體。
不要在這些細節(jié)上糾纏了,聽講
2004-12-31 16:29:34 /:>D10.天地弦(185511468)
這個實例的
function GetFrameworkService(_id: Integer): IFrameworkService; stdcall;
2004-12-31 16:29:47 /:>D10.天地弦(185511468)
好
2004-12-31 16:30:19 /:>D10.天地弦(185511468)
TFrameworkServices.ItSelf[ID]這樣就是調用了這個實例的
GetFrameworkService(_id: Integer): IFrameworkService; 方法,返回一個IFrameWorkService接口
2004-12-31 16:30:32 /:>D10.天地弦(185511468)
TFrameworkServices.ItSelf[ID]返回一個IFrameWorkService接口
2004-12-31 16:30:48 西門吹風㊣(48542332)
明白了
2004-12-31 16:31:00 /:>D10.天地弦(185511468)
TFrameworkServices.ItSelf[ID].ModelService[ModuleIndex]
2004-12-31 16:31:30 /:>D10.天地弦(185511468)
之后的ModelService[ModuleIndex] 也就是返回一個IModelService接口
2004-12-31 16:32:00 /:>D10.天地弦(185511468)
也是使用了同樣的方法
2004-12-31 16:32:37 /:>D10.天地弦(185511468)
然后再調用該接口的方法ProcessData來處理數(shù)據(jù)
2004-12-31 16:32:51 /:>D10.天地弦(185511468)
這樣中間層的任務就完成了
2004-12-31 16:33:08 /:>D10.天地弦(185511468)
大家記得中間層的任務嗎?
2004-12-31 16:33:40 神王(375867424)
總結一下,我剛聽掉了一些
2004-12-31 16:34:08 /:>D10.天地弦(185511468)
3弟,中間層的任務是什么?
2004-12-31 16:34:21 A3.武稀松(42088303)
YWLJ
2004-12-31 16:34:38 /:>D10.天地弦(185511468)
YWLJ是什么?
2004-12-31 16:34:57 A3.武稀松(42088303)
你剛才問的答案
2004-12-31 16:35:05 神王(375867424)
大哥,總結一下
2004-12-31 16:35:33 /:>D10.天地弦(185511468)
不懂,
2004-12-31 16:35:36 D3天之痕若虹(86278566)
暈,剛掉了。。
2004-12-31 16:35:39 C9. 隨風飄(87450854)
對 D10 總結下拉?
2004-12-31 16:35:42 A3.武稀松(42088303)
拼音而已[;P]
2004-12-31 16:36:36 /:>D10.天地弦(185511468)
中間層的任務就是
找到對應的模塊接口,接參數(shù)傳遞到模塊進行處理
2004-12-31 16:36:45 /:>D10.天地弦(185511468)
還沒有
2004-12-31 16:36:56?? 冷俊(76437853)
哦 那就繼續(xù)?
2004-12-31 16:37:00 A3.武稀松(42088303)
暈倒.看來我說錯了
2004-12-31 16:37:05 /:>D10.天地弦(185511468)
今天還要不要繼續(xù)
2004-12-31 16:37:06 D3天之痕若虹(86278566)
就是根據(jù)client里傳的ModuleIndex, ActionIndex
?先初始相關模塊。。
?然后人在再由模塊管理中心,查
2004-12-31 16:37:22 /:>D10.天地弦(185511468)
中間層的任務就是
找到對應的模塊接口,將參數(shù)傳遞到模塊進行處理?
2004-12-31 16:37:28 D3天之痕若虹(86278566)
找對應的處理模塊,來做出相應的處理。。
2004-12-31 16:37:35 /:>D10.天地弦(185511468)
ye
2004-12-31 16:37:48 神王(375867424)
謝謝,繼續(xù)
2004-12-31 16:37:53 D3天之痕若虹(86278566)
不好意思,我表達能力不行。。。
2004-12-31 16:38:00 A3.武稀松(42088303)
D10還有的話就繼續(xù)啊
2004-12-31 16:38:10 /:>D10.天地弦(185511468)
3哥,我還以為你不在了
2004-12-31 16:38:25 乾隆(7891551)
找對應模塊是靠ModelService[ModuleIndex]
這句吧
2004-12-31 16:38:34 /:>D10.天地弦(185511468)
TFrameworkServices.ItSelf[ID].ModelService[ModuleIndex].ProcessData(Id, ActionIndex, Data, Msg)
2004-12-31 16:38:43 /:>D10.天地弦(185511468)
就是這一句,就是中間層要做的事了
2004-12-31 16:39:18 /:>D10.天地弦(185511468)
乾隆,是的
2004-12-31 16:39:21 D3天之痕若虹(86278566)
我有個不明白的地方,就是ID什么弄呢
2004-12-31 16:39:21 A3.武稀松(42088303)
我在工作.隔2分鐘才看一次
2004-12-31 16:39:31 /:>D10.天地弦(185511468)
呵呵,
2004-12-31 16:39:41 /:>D10.天地弦(185511468)
ID是什么,就是等下要講的了
2004-12-31 16:40:05?? 冷俊(76437853)
看來還是我這個菜鳥 敬課
2004-12-31 16:40:20 /:>D10.天地弦(185511468)
慢慢來
2004-12-31 16:40:24 A1.Aleyn.wu(45198124)
我和A3差不多,工作中,每隔幾份鐘上來看。
2004-12-31 16:40:29 /:>D10.天地弦(185511468)
哦
2004-12-31 16:40:35 /:>D10.天地弦(185511468)
那我們開始了
2004-12-31 16:40:42 /:>D10.天地弦(185511468)
ID是什么,大家找找
2004-12-31 16:40:44 A3.武稀松(42088303)
但是D10的課,我一定會跟到底的
2004-12-31 16:40:59 /:>D10.天地弦(185511468)
[:<],感動中
2004-12-31 16:41:06 乾隆(7891551)
TFrameworkServices.ItSelf[ID].ModelService[ModuleIndex].ProcessData(Id, ActionIndex, Data, Msg)
找框架的哪個方法調用 調用哪個功能模塊 具體執(zhí)行這個功能模塊
理解對不?
2004-12-31 16:41:26 /:>D10.天地弦(185511468)
乾隆,對的
2004-12-31 16:41:29 /:>D10.天地弦(185511468)
你理解了
2004-12-31 16:41:31 D3天之痕若虹(86278566)
10弟弟幸苦了 [coffee]
2004-12-31 16:41:36 /:>D10.天地弦(185511468)
hehe
2004-12-31 16:41:39 A3.武稀松(42088303)
乾隆有進步啊
2004-12-31 16:41:57 /:>D10.天地弦(185511468)
我們繼續(xù)啦
2004-12-31 16:41:57 /:>D10.天地弦(185511468)
ID是什么,大家找找?
2004-12-31 16:41:59 神王(375867424)
大哥講的很好
2004-12-31 16:42:04 /:>D10.天地弦(185511468)
[;-D]
2004-12-31 16:42:14 D3天之痕若虹(86278566)
ok
2004-12-31 16:42:17 /:>D10.天地弦(185511468)
大伙的功勞,
2004-12-31 16:42:34 神王(375867424)
回頭[coffee]
2004-12-31 16:42:37 /:>D10.天地弦(185511468)
西門,你不在了
2004-12-31 16:42:44 /:>D10.天地弦(185511468)
ID是什么,大家找找
2004-12-31 16:42:46 西門吹風㊣(48542332)
在,聽
2004-12-31 16:42:51 /:>D10.天地弦(185511468)
3弟,找到?jīng)]有?
2004-12-31 16:42:53 D3天之痕若虹(86278566)
FThreadID: Cardinal;
?property ID: Cardinal read FThreadID;
2004-12-31 16:43:06 /:>D10.天地弦(185511468)
我們順藤摸瓜
2004-12-31 16:43:09 D3天之痕若虹(86278566)
只讀的?
2004-12-31 16:43:19 /:>D10.天地弦(185511468)
type
? TMLRDataModule = class(TRemoteDataModule, IMLRDataModule)
??? procedure RemoteDataModuleCreate(Sender: TObject);
??? procedure RemoteDataModuleDestroy(Sender: TObject);
? private
??? { Private declarations }
??? FModels: TModels; //為該客戶端維護的模塊列表
??? FService: TFrameworkService;
??? FThreadID: Cardinal;
??? CurrentUser: TUser;
? protected
??? class procedure UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); override;
??? function ProcessData(ModuleIndex, ActionIndex: Integer; var Data,
????? Msg: OleVariant): WordBool; safecall;
??? function ProcessDataEx(ActionIndex: Integer; var Data,
????? Msg: OleVariant): WordBool; safecall;
? public
??? { Public declarations }
??? property ID: Cardinal read FThreadID;
? end;
2004-12-31 16:43:20 D3天之痕若虹(86278566)
那如何計數(shù)?
2004-12-31 16:43:45 西門吹風㊣(48542332)
?FThreadID := dkHandle.NewHandle; //為每個客戶端創(chuàng)建一個Handle
?
2004-12-31 16:44:09 /:>D10.天地弦(185511468)
中間層為每一次客戶端連結創(chuàng)建一個TMLRDataModule?
2004-12-31 16:44:17 /:>D10.天地弦(185511468)
大伙明白這點?
2004-12-31 16:44:37 D3天之痕若虹(86278566)
?FThreadID := dkHandle.NewHandle; //為每個客戶端創(chuàng)建一個Handle
?這樣不會被覆蓋了嗎?
2004-12-31 16:44:48 D3天之痕若虹(86278566)
每一次客戶端連結時
2004-12-31 16:44:58 /:>D10.天地弦(185511468)
嗯
2004-12-31 16:45:11 /:>D10.天地弦(185511468)
不知道大伙清不清楚
2004-12-31 16:45:25?? 冷俊(76437853)
D3天之痕若虹(86278566) 16:44:37
?FThreadID := dkHandle.NewHandle; //為每個客戶端創(chuàng)建一個Handle
?這樣不會被覆蓋了嗎?
D3天之痕若虹(86278566) 16:44:48
每一次客戶端連結時 [:>]D10.天地弦(185511468) 16:44:58
嗯
????
2004-12-31 16:45:31 D3天之痕若虹(86278566)
我的意思是指,如何保證一致性呢
2004-12-31 16:45:34 西門吹風㊣(48542332)
不是很清楚
2004-12-31 16:45:36 乾隆(7891551)
TMLRDataModule 是什么 相當與什么
2004-12-31 16:45:45 /:>D10.天地弦(185511468)
是RemoteModule
2004-12-31 16:46:07 D3天之痕若虹(86278566)
呵,稍等。。。先碼部分代碼看完先
2004-12-31 16:46:10 /:>D10.天地弦(185511468)
中間層為每一次客戶端連結創(chuàng)建一個TMLRDataModule? 這個是Midas
實現(xiàn)的功能
2004-12-31 16:46:24 /:>D10.天地弦(185511468)
3弟先別急
2004-12-31 16:46:33 /:>D10.天地弦(185511468)
西門清楚不
2004-12-31 16:46:38 西門吹風㊣(48542332)
清楚
2004-12-31 16:46:39 /:>D10.天地弦(185511468)
中間層為每一次客戶端連結創(chuàng)建一個TMLRDataModule? 這個是Midas
實現(xiàn)的功能?
2004-12-31 16:47:06 /:>D10.天地弦(185511468)
這個ID,只是每一次客戶端連結編一個號碼
2004-12-31 16:47:24 /:>D10.天地弦(185511468)
好像大家入隊的編號一樣,叫D3,肯定是3弟了
2004-12-31 16:47:50 D3天之痕若虹(86278566)
[:D]
2004-12-31 16:47:51 /:>D10.天地弦(185511468)
跟上沒有?
2004-12-31 16:47:51?? 冷俊(76437853)
可不可以逃跑?
2004-12-31 16:48:06 /:>D10.天地弦(185511468)
冷俊,你可以逃了
2004-12-31 16:48:12 /:>D10.天地弦(185511468)
呵呵
2004-12-31 16:48:18 西門吹風㊣(48542332)
繼續(xù),不懂就問
2004-12-31 16:48:27 神王(375867424)
還有沒有沒
2004-12-31 16:48:32 /:>D10.天地弦(185511468)
這個ID,讀的就是FThreadID
2004-12-31 16:49:09 /:>D10.天地弦(185511468)
FThreadID 就是在TMLRDataModule創(chuàng)建的時候生成的一個順號
2004-12-31 16:49:13 神王(375867424)
這個筆記在那里
2004-12-31 16:49:22 /:>D10.天地弦(185511468)
procedure TMLRDataModule.RemoteDataModuleCreate(Sender: TObject);
begin
? FThreadID := dkHandle.NewHandle; //為每個客戶端創(chuàng)建一個Handle
? CurrentUser := TUser.Create(FThreadID); //創(chuàng)建用戶類
? TUsers.Users.Add(CurrentUser); //添加至用戶列表
? TRemoteDataModules.ItSelf.Add(Self); //添加當前模塊到列表
? FModels := TModels.Create(false);?? //自己負責釋放對象
? FService := TFrameworkService.Create(FModels, ID); //創(chuàng)建當前service;
? TFrameworkServices.ItSelf.Add(FService);?????????? //添加到框架集里面,
end;
2004-12-31 16:49:30 /:>D10.天地弦(185511468)
? FThreadID := dkHandle.NewHandle; //為每個客戶端創(chuàng)建一個Handle
2004-12-31 16:49:31 乾隆(7891551)
ID是不是就是連接到中間層的時候給每個連接排的序號
2004-12-31 16:49:35 /:>D10.天地弦(185511468)
看到這一句沒有
2004-12-31 16:49:40 /:>D10.天地弦(185511468)
對
2004-12-31 16:49:44 D3天之痕若虹(86278566)
看到了
2004-12-31 16:49:50 /:>D10.天地弦(185511468)
乾隆,對的,你明了
2004-12-31 16:50:13 /:>D10.天地弦(185511468)
這個編號是為了方便查找
2004-12-31 16:50:24 A3.武稀松(42088303)
D10的ID根據(jù)什么創(chuàng)建的
2004-12-31 16:50:26 乾隆(7891551)
天啊,你們把類玩的太熟悉了,[:'(]
2004-12-31 16:50:46 /:>D10.天地弦(185511468)
是累加器,3哥
2004-12-31 16:50:48?? 冷俊(76437853)
為什么?唉 后面的聽不懂了 有點迷茫了 我先工作了 一會在來看記錄 今天的講義整理了一半
2004-12-31 16:50:57 /:>D10.天地弦(185511468)
呵呵
2004-12-31 16:51:12 /:>D10.天地弦(185511468)
每創(chuàng)建一次就累加一次
2004-12-31 16:51:17 A3.武稀松(42088303)
我們使用的是GUID轉化成字符串做唯一的ID的.呵呵
2004-12-31 16:51:23 A1.Aleyn.wu(45198124)
慢慢來,就會聽懂了。
2004-12-31 16:51:36 神王(375867424)
我也是,中間掉了一些,跟不上了
2004-12-31 16:51:39 A1.Aleyn.wu(45198124)
就象D10,不用很久就學會了。
2004-12-31 16:51:44 /:>D10.天地弦(185511468)
呵呵,我開始也是這樣考慮,
2004-12-31 16:51:49 乾隆(7891551)
我要堅持聽下來
2004-12-31 16:51:51 C9. 隨風飄(87450854)
INC(ID)?
2004-12-31 16:52:07 /:>D10.天地弦(185511468)
你看看dkHandle.newhandle
2004-12-31 16:52:10 /:>D10.天地弦(185511468)
C9
2004-12-31 16:52:11 A1.Aleyn.wu(45198124)
42088303(A3.武稀松) 16:51:17
我們使用的是GUID轉化成字符串做唯一的ID的.呵呵
<-和我做的一樣。
2004-12-31 16:52:28 A1.Aleyn.wu(45198124)
不過GUID是32位的,我的是16位的。
2004-12-31 16:52:31 D3天之痕若虹(86278566)
function NewHandle: Cardinal;
begin
? id := id + 1;
? result := id;
end;
2004-12-31 16:52:35 /:>D10.天地弦(185511468)
[:L]
2004-12-31 16:52:44 C9. 隨風飄(87450854)
OK 看看先?
2004-12-31 16:52:51 /:>D10.天地弦(185511468)
呵呵,只是累加,和生成GUID也是一樣的
2004-12-31 16:52:54 C9. 隨風飄(87450854)
剛掉了線
2004-12-31 16:52:59 /:>D10.天地弦(185511468)
好了,繼續(xù)
2004-12-31 16:53:01 D3天之痕若虹(86278566)
看個人用法習慣
2004-12-31 16:53:06 A3.武稀松(42088303)
A1的16位怎么搞得
2004-12-31 16:53:43 A3.武稀松(42088303)
D10繼續(xù)啊
2004-12-31 16:53:53 /:>D10.天地弦(185511468)
框架為每個客戶端連結維護了一個TFrameworkService,FModels: TModels; //為該客戶端維護的模塊列表
2004-12-31 16:54:02 /:>D10.天地弦(185511468)
繼續(xù)
2004-12-31 16:54:08 /:>D10.天地弦(185511468)
框架為每個客戶端連結維護了一個TFrameworkService,FModels: TModels; //為該客戶端維護的模塊列表
2004-12-31 16:54:17 /:>D10.天地弦(185511468)
先理解這一句
2004-12-31 16:54:29?? 冷俊(76437853)
舍不得走啊 我還是繼續(xù)聽課吧
2004-12-31 16:54:40 /:>D10.天地弦(185511468)
呵呵,慢慢聽
2004-12-31 16:54:50 /:>D10.天地弦(185511468)
我講得也很慢
2004-12-31 16:54:55 神王(375867424)
我也一樣,什么事也不做
2004-12-31 16:54:59 神王(375867424)
聽課
2004-12-31 16:55:09 /:>D10.天地弦(185511468)
明了上面那句沒有?
2004-12-31 16:55:12 D3天之痕若虹(86278566)
FModels: TModels; //為該客戶端維護的模塊列表
??? FService: TFrameworkService;
??? FThreadID: Cardinal;
??? CurrentUser: TUser;
---------------
對ClientX的管理
2004-12-31 16:55:23 hellfire(149902352)
我也上WC都沒時間
2004-12-31 16:56:03 /:>D10.天地弦(185511468)
CurrentUser: TUser;還沒有具體來實現(xiàn),可以保存當前客戶端登陸的一些信息
2004-12-31 16:56:28 /:>D10.天地弦(185511468)
選取的帳套
2004-12-31 16:56:53 D3天之痕若虹(86278566)
恩
?
2004-12-31 16:57:17 乾隆(7891551)
為該客戶端維護的模塊列表 ?有什么具體作用啊
2004-12-31 16:57:18 /:>D10.天地弦(185511468)
框架為每個客戶端連結維護了一個TFrameworkService,FModels: TModels;
大伙要記住這一句
2004-12-31 16:57:49 西門吹風㊣(48542332)
這句對吧
?FModels := TModels.Create(false);?? //自己負責釋放對象?
2004-12-31 16:57:56 /:>D10.天地弦(185511468)
嗯
2004-12-31 16:58:03 /:>D10.天地弦(185511468)
好我們繼續(xù)
2004-12-31 16:58:26 乾隆(7891551)
框架為每個客戶端連結維護了一個TFrameworkService,FModels: TModels;
這句再說下
2004-12-31 16:58:30 /:>D10.天地弦(185511468)
看看
procedure TMLRDataModule.RemoteDataModuleCreate(Sender: TObject);
begin
? FThreadID := dkHandle.NewHandle; //為每個客戶端創(chuàng)建一個Handle
? CurrentUser := TUser.Create(FThreadID); //創(chuàng)建用戶類
? TUsers.Users.Add(CurrentUser); //添加至用戶列表
? TRemoteDataModules.ItSelf.Add(Self); //添加當前模塊到列表
? FModels := TModels.Create(false);?? //自己負責釋放對象
? FService := TFrameworkService.Create(FModels, ID); //創(chuàng)建當前service;
? TFrameworkServices.ItSelf.Add(FService);?????????? //添加到框架集里面,
end;
?
2004-12-31 16:58:46 D3天之痕若虹(86278566)
總框架只產(chǎn)生一個實現(xiàn)。。。。
而用戶信息,含所需模塊信息,就地.ItSelf.Add(FService);追加。。?
2004-12-31 16:59:22 D8。飄塵(43745429)
function NewHandle: Cardinal;
begin
? id := id + 1;
? result := id;
end;?
2004-12-31 16:59:27 D8。飄塵(43745429)
這里有錯呀
2004-12-31 16:59:32 D8。飄塵(43745429)
沒有獨占呀
2004-12-31 16:59:32 /:>D10.天地弦(185511468)
7891551(乾隆) 16:58:26
框架為每個客戶端連結維護了一個TFrameworkService,FModels: TModels;
這句再說下 ==>每個客戶端連結可以通過維護的這些實例來做要做的事
2004-12-31 16:59:49 /:>D10.天地弦(185511468)
43745429(D8。飄塵) 16:59:22
function NewHandle: Cardinal;
begin
? id := id + 1;
? result := id;
end;?
43745429(D8。飄塵) 16:59:27
這里有錯呀
43745429(D8。飄塵) 16:59:32
沒有獨占呀 =>
2004-12-31 16:59:54 /:>D10.天地弦(185511468)
暈,是沒有,再加
2004-12-31 17:00:09 /:>D10.天地弦(185511468)
3弟,對的
2004-12-31 17:00:10 hellfire(149902352)
加什么
2004-12-31 17:00:29 /:>D10.天地弦(185511468)
procedure TMLRDataModule.RemoteDataModuleCreate(Sender: TObject);
begin
? FThreadID := dkHandle.NewHandle; //為每個客戶端創(chuàng)建一個Handle
? CurrentUser := TUser.Create(FThreadID); //創(chuàng)建用戶類
? TUsers.Users.Add(CurrentUser); //添加至用戶列表
? TRemoteDataModules.ItSelf.Add(Self); //添加當前模塊到列表
? FModels := TModels.Create(false);?? //自己負責釋放對象
? FService := TFrameworkService.Create(FModels, ID); //創(chuàng)建當前service;
? TFrameworkServices.ItSelf.Add(FService);?????????? //添加到框架集里面,
end;
//看看這一段
2004-12-31 17:00:31?? 冷俊(76437853)
不要講錯啊 我很難找到的
2004-12-31 17:00:34 乾隆(7891551)
這句再說下 ==>每個客戶端連結可以通過維護的這些實例來做要做的事
再通俗點好嗎,具體維護實例怎么講。
2004-12-31 17:00:46 乾隆(7891551)
這句再說下 ==>每個客戶端連結可以通過維護的這些實例來做要做的事
再通俗點好嗎,具體維護實例怎么講。
2004-12-31 17:01:06 D3天之痕若虹(86278566)
TRemoteDataModules.ItSelf.Remove(Self);
能正確釋放對應資源嗎?
與這個比效TFrameworkServices.ItSelf.Add(FService);
2004-12-31 17:01:26 /:>D10.天地弦(185511468)
乾隆,你現(xiàn)在只要記住,每個客戶端連結可以通過維護的這些實例來做要做的事?
2004-12-31 17:01:31 D3天之痕若虹(86278566)
我看傳的self怪怪得[?]
2004-12-31 17:01:58 /:>D10.天地弦(185511468)
3弟,你跑快了
2004-12-31 17:02:08 D3天之痕若虹(86278566)
[;-D]
2004-12-31 17:02:21 乾隆(7891551)
好吧,就是維護具體的一個對象來實現(xiàn)要做的事情
2004-12-31 17:02:32 /:>D10.天地弦(185511468)
繼續(xù)
2004-12-31 17:02:45 D3天之痕若虹(86278566)
聽你的先。。。
2004-12-31 17:03:33 /:>D10.天地弦(185511468)
?1. FThreadID := dkHandle.NewHandle; //為每個客戶端創(chuàng)建一個Handle
?2. CurrentUser := TUser.Create(FThreadID); //創(chuàng)建用戶類
?3. TUsers.Users.Add(CurrentUser); //添加至用戶列表
?4. TRemoteDataModules.ItSelf.Add(Self); //添加當前模塊到列表
?5. FModels := TModels.Create(false);?? //自己負責釋放對象
?6. FService := TFrameworkService.Create(FModels, ID); //創(chuàng)建當前service;
?7. TFrameworkServices.ItSelf.Add(FService);?????????? //添加到框架集里面,
2004-12-31 17:03:51 /:>D10.天地弦(185511468)
1句講過了
2004-12-31 17:04:10 /:>D10.天地弦(185511468)
是為每個客戶端連結產(chǎn)生一個編號
2004-12-31 17:04:32 /:>D10.天地弦(185511468)
2.是創(chuàng)建一個TUser對象,
2004-12-31 17:04:33 神王(375867424)
[ID]
2004-12-31 17:04:48 /:>D10.天地弦(185511468)
還沒有什么用,可以用來保存一些客戶端信息
2004-12-31 17:05:31 /:>D10.天地弦(185511468)
3句TUsers,和FrameworkServices一樣的了,維護的是一個列表,
2004-12-31 17:05:36 D3天之痕若虹(86278566)
恩,那就從3開始
2004-12-31 17:05:41 /:>D10.天地弦(185511468)
也使用了單件模式
2004-12-31 17:05:50 乾隆(7891551)
procedure TMLRDataModule.RemoteDataModuleCreate(Sender: TObject);這個應該叫方法?
是在哪里定義的是中間層里嗎
2004-12-31 17:05:58 /:>D10.天地弦(185511468)
2,3還有待完shan
2004-12-31 17:06:05 /:>D10.天地弦(185511468)
是的
2004-12-31 17:06:17 /:>D10.天地弦(185511468)
是建立的時候的事件
2004-12-31 17:06:25 D3天之痕若虹(86278566)
TRemoteDataModules.ItSelf.Add(Self); //添加當前模塊到列表
?TFrameworkServices.ItSelf.Add(FService);?????????? //添加到框架集里面,
這是不是維護了兩份client信息。。。
2004-12-31 17:06:40 /:>D10.天地弦(185511468)
不是
2004-12-31 17:06:42 D3天之痕若虹(86278566)
如果信成地同一個會不會更好管理呢
2004-12-31 17:06:52 /:>D10.天地弦(185511468)
3. TRemoteDataModules.ItSelf.Add(Self); //添加當前模塊到列表
2004-12-31 17:06:54? 尋歡(42477914)
今天什么主題?[?]
2004-12-31 17:06:59 /:>D10.天地弦(185511468)
?4. TRemoteDataModules.ItSelf.Add(Self); //添加當前模塊到列表
2004-12-31 17:07:03 /:>D10.天地弦(185511468)
這個
2004-12-31 17:07:15 神王(375867424)
3,4好好講講
2004-12-31 17:07:22 /:>D10.天地弦(185511468)
這個還沒有什么用,后來發(fā)現(xiàn)好像不用,也可以
2004-12-31 17:07:26 乾隆(7891551)
procedure TMLRDataModule.RemoteDataModuleCreate(Sender: TObject);這個該叫什么模塊,中間層的總調度?
2004-12-31 17:07:38 /:>D10.天地弦(185511468)
TRemoteDataModules是自己定義的一個類
2004-12-31 17:07:40?? 冷俊(76437853)
[:>]D10.天地弦(185511468) 17:06:17
是建立的時候的事件
什么意思?
2004-12-31 17:07:58 A3.武稀松(42088303)
185511468([:>]D10.天地弦) 17:07:22
這個還沒有什么用,后來發(fā)現(xiàn)好像不用,也可以
-----------
半句話
2004-12-31 17:08:14 /:>D10.天地弦(185511468)
[:L]
2004-12-31 17:08:15 A1.Aleyn.wu(45198124)
[:D]
2004-12-31 17:08:34 /:>D10.天地弦(185511468)
?4. TRemoteDataModules.ItSelf.Add(Self); //添加當前模塊到列表
這個還沒有什么用,后來發(fā)現(xiàn)好像不用這樣也可以?
2004-12-31 17:08:38?? 冷俊(76437853)
我剛發(fā)的也是半句
2004-12-31 17:08:46 A3.武稀松(42088303)
[:D]
2004-12-31 17:09:05 /:>D10.天地弦(185511468)
procedure TMLRDataModule.RemoteDataModuleCreate(Sender: TObject)
這個函數(shù)發(fā)生在什么時候有人不明嗎?
2004-12-31 17:09:07 江畔綠舟(8128584)
DELPHI對象可以序列化嗎?
2004-12-31 17:09:09 神王(375867424)
是為了維護每一個功能模用對嗎
2004-12-31 17:09:27 /:>D10.天地弦(185511468)
procedure TMLRDataModule.RemoteDataModuleCreate(Sender: TObject)
這個函數(shù)發(fā)生在什么時候有人不明嗎?
2004-12-31 17:09:32 hellfire(149902352)
不就是OnCreate事件嗎
2004-12-31 17:09:39? 尋歡(42477914)
呵呵
2004-12-31 17:09:44 D3天之痕若虹(86278566)
知到呀
2004-12-31 17:09:46 神王(375867424)
這個回頭告訴,
2004-12-31 17:09:46 /:>D10.天地弦(185511468)
是,但是陛下好像不知道
2004-12-31 17:09:56 hellfire(149902352)
早明白了
2004-12-31 17:10:00 西門吹風㊣(48542332)
陛下?
2004-12-31 17:10:01 神王(375867424)
接著說A3問的問題
2004-12-31 17:10:01 乾隆(7891551)
是發(fā)生在中間層用來維護其他模塊的吧
2004-12-31 17:10:03 C9. 隨風飄(87450854)
RemoteDataModule ON CREATE
2004-12-31 17:10:06 乾隆(7891551)
告訴我啊
2004-12-31 17:10:15 /:>D10.天地弦(185511468)
事件就是當什么時候,要做的事
2004-12-31 17:10:38 /:>D10.天地弦(185511468)
陛下就是干隆
2004-12-31 17:10:43 /:>D10.天地弦(185511468)
只是陛下好打一點
2004-12-31 17:10:47 神王(375867424)
接著講
2004-12-31 17:10:59?? 冷俊(76437853)
暈暈 好好講啊
2004-12-31 17:11:01 乾隆(7891551)
RemoteDataModuleCreate這是該類的個事件啊[:$]
2004-12-31 17:11:04 /:>D10.天地弦(185511468)
乾隆掉隊了,你們等等,我拿一把
2004-12-31 17:11:33 乾隆(7891551)
就是,得照顧老弱者
2004-12-31 17:11:39 C9. 隨風飄(87450854)
我暈
2004-12-31 17:11:47 西門吹風㊣(48542332)
陛下:是數(shù)據(jù)模組建立時候的事件
2004-12-31 17:11:49 神王(375867424)
時間有限嗎
2004-12-31 17:12:04 /:>D10.天地弦(185511468)
TMLRDataModule什么時候會創(chuàng)建實例
2004-12-31 17:12:06 C9. 隨風飄(87450854)
我還沒怎么接觸這些思想
2004-12-31 17:12:18?? 冷俊(76437853)
不知道
2004-12-31 17:12:28 /:>D10.天地弦(185511468)
講不完以后再開
2004-12-31 17:13:01 /:>D10.天地弦(185511468)
TMLRDataModule什么時候會創(chuàng)建實例 ,乾隆你明不?
2004-12-31 17:13:20 /:>D10.天地弦(185511468)
西門,你告訴他們兩個
2004-12-31 17:13:31 神王(375867424)
48542332(西門吹風㊣) 17:11:47
陛下:是數(shù)據(jù)模組建立時候的事件?
2004-12-31 17:13:32 西門吹風㊣(48542332)
客戶端 ProcessData的時候
2004-12-31 17:13:45 /:>D10.天地弦(185511468)
不是哦
?
2004-12-31 17:14:02 /:>D10.天地弦(185511468)
是客戶端和中間層第一次連結的時候
2004-12-31 17:14:15 乾隆(7891551)
我掉線了[:'(]
2004-12-31 17:14:19 /:>D10.天地弦(185511468)
會創(chuàng)建一個TMLRDataModule實例
2004-12-31 17:14:26 /:>D10.天地弦(185511468)
[:L]暈
2004-12-31 17:14:32 /:>D10.天地弦(185511468)
TMLRDataModule什么時候會創(chuàng)建實例 ,乾隆你明不??
2004-12-31 17:14:43 /:>D10.天地弦(185511468)
是客戶端和中間層第一次連結的時候
會創(chuàng)建一個TMLRDataModule實例?
2004-12-31 17:14:44 西門吹風㊣(48542332)
對,我搞錯了,中間層運行的時候就create
2004-12-31 17:15:09 /:>D10.天地弦(185511468)
TMLRDataModule的實例是每個客戶端一份實例
2004-12-31 17:15:11 乾隆(7891551)
哦,我知道了
2004-12-31 17:15:41 /:>D10.天地弦(185511468)
??? procedure RemoteDataModuleCreate(Sender: TObject);
這個事件是這個實例創(chuàng)建的時候發(fā)生的事件
2004-12-31 17:15:48 /:>D10.天地弦(185511468)
冷jun明不?
2004-12-31 17:16:01 /:>D10.天地弦(185511468)
這個事件就是ONCreate事件了
2004-12-31 17:16:07 D12.阿凱(107125961)
哈哈
2004-12-31 17:16:10 D12.阿凱(107125961)
明白
2004-12-31 17:16:15 /:>D10.天地弦(185511468)
在Create創(chuàng)建的時候發(fā)件的事件
2004-12-31 17:16:29 /:>D10.天地弦(185511468)
陛下,知道了不?
2004-12-31 17:16:35 神王(375867424)
阿兄半路出來也明白
2004-12-31 17:16:46?? 冷俊(76437853)
我在品? 繼續(xù) 謝謝
2004-12-31 17:16:57 乾隆(7891551)
哦就是當客戶端和中間層第一次連結的時候,就觸發(fā)中間層的RemoteDataModuleCreate事件,
做那堆初始化,維護工作了
2004-12-31 17:17:00 神王(375867424)
我中間掉了一些,后面我都>>>
2004-12-31 17:17:01 D12.阿凱(107125961)
哈哈,我邊開會邊看
2004-12-31 17:17:02 /:>D10.天地弦(185511468)
好了,今天講到這里吧
2004-12-31 17:17:25 /:>D10.天地弦(185511468)
下次再找個時間繼續(xù)
2004-12-31 17:17:37 hellfire(149902352)
什么時候
2004-12-31 17:17:44? 尋歡(42477914)
群主真是辛苦!
2004-12-31 17:17:45 /:>D10.天地弦(185511468)
待通知
轉載于:https://www.cnblogs.com/DKSoft/articles/85708.html
總結
以上是生活随笔為你收集整理的主题:的中间层框架 第一节的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpeedyCloud研发总监李孟:不要
- 下一篇: 更改eclipse字体