delphi+java三層開發(fā)架構(gòu)系統(tǒng)的實現(xiàn)_第1頁
delphi+java三層開發(fā)架構(gòu)系統(tǒng)的實現(xiàn)_第2頁
delphi+java三層開發(fā)架構(gòu)系統(tǒng)的實現(xiàn)_第3頁
delphi+java三層開發(fā)架構(gòu)系統(tǒng)的實現(xiàn)_第4頁
delphi+java三層開發(fā)架構(gòu)系統(tǒng)的實現(xiàn)_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、delphi+java三層開發(fā)架構(gòu)系統(tǒng)的實現(xiàn) 客戶端基于delphi 1>選擇基于阻塞模式的Indy通信套件作為通信工具;(可使delphi代碼更簡潔 2>選擇tcp/ip作為通信協(xié)議;(可選擇web service,http,主要看appserver的架設(shè)情況;甚至可以在tcp/ip的基礎(chǔ)上自定義通信協(xié)議 3>選擇XML或變長字符串或文件,內(nèi)存流作為數(shù)據(jù)包傳遞信息; 數(shù)據(jù)節(jié)點的結(jié)構(gòu): |-|-|-|-| | 長度 |數(shù)據(jù) |長度 |數(shù)據(jù) | |-|-|-|-| 說明: 1. 長度為其后數(shù)據(jù)串的長度的長度串; 2. 數(shù)據(jù)采用變長方式組織; 一般數(shù)據(jù)包的結(jié)構(gòu): |-|-|-|-

2、|-|-|-|-| | 名稱長度 |名稱 |值長度 |數(shù)據(jù)值 | 名稱長度 |名稱 |值長度 |數(shù)據(jù)值 | |-|-|-|-|-|-|-|-| 4>查詢數(shù)據(jù):客戶端發(fā)送查詢命令到appserver,appserver解析命令;通過jdbc到數(shù)據(jù)庫查詢數(shù)據(jù); appserver再把查詢的數(shù)據(jù)打包為符合TClientDataSet.XMLData要求的XML數(shù)據(jù)包返回到客戶端; 5>更新數(shù)據(jù):利用TClientDataSet.Delta的屬性直接映射為insert,update,delete類型的SQL語句,然后發(fā)送到Appserver進行事務(wù)處理; 6>接口規(guī)劃: 函數(shù)功能:

3、發(fā)送操作命令和數(shù)據(jù)到應(yīng)用服務(wù)器 函數(shù)聲明: function StreamCommand(ASendText:WideString;ASendStream:TStream=nil:TStream;stdcall;external 'Communication.dll' 參數(shù)說明: - 參數(shù)名稱 描述 - ASendText 要發(fā)送的字節(jié)數(shù)據(jù)(一般應(yīng)包括命令信息 - ASendStream 要發(fā)送的內(nèi)存流或文件流等數(shù)據(jù)(默認(rèn)為nil - 函數(shù)說明:正常返回字節(jié)流數(shù)據(jù)(可能返回空串;異常返回nil;此函數(shù)一般供DLL中的接口函數(shù)調(diào)用; 用例:Result:=StreamComman

4、d('013SelectCommand:045SELECT * FROM CRM_CUSTOMER WHERE B_COMPANY=1 :' 這個語句的意思是發(fā)送一個查詢命令到AppServer,命令的內(nèi)容為SELECT * FROM CRM_CUSTOMER WHERE B_COMPANY=1; 如果命令能正確執(zhí)行,那么AppServer會把查詢的結(jié)果打包發(fā)送到客戶端,以字節(jié)流的形式返回. 函數(shù)功能: 查詢單個數(shù)據(jù)集 函數(shù)聲明: function SelectData(ACDS: TClientDataSet;const ASelectText: string:Boolean

5、; 參數(shù)說明: - 參數(shù)名稱 描述 - - ACDS 存放查詢結(jié)果集的TClientDataSet - ASelectText 要發(fā)送的單條查詢語句 - 函數(shù)說明: 成功返回true(包括只有數(shù)據(jù)元的空數(shù)據(jù)集;失敗返回false 用例: Result:=SelectData(cdsTemp,'SELECT * FROM CRM_CUSTOMER'這個語句的意思是: 發(fā)送一個查詢語句到AppServer,如果命令能正確執(zhí)行,那么AppServer會把查詢的結(jié)果集打包發(fā)送到客戶端事先創(chuàng)建好的cdsTemp中. * 函數(shù)功能:查詢多個數(shù)據(jù)集 函數(shù)聲明:function SelectD

6、atas(ACDS:array of TClientDataSet;const ASelectText: TStringList:Boolean; 參數(shù)說明:- 參數(shù)名稱 描述 - ACDS 存放查詢結(jié)果集的多個TClientDataSet列表 - ASelectText 要發(fā)送的多條查詢語句列表 - 函數(shù)說明:成功返回true(包括只有數(shù)據(jù)元的空數(shù)據(jù)集;失敗返回false 用例: var sSql:string; sList:TStringList; cdsTemp1,cdsTemp2,cdsTemp3:TClientDataSet; begin try cdsTemp1:=TClientD

7、ataSet.Create(nil; cdsTemp2:=TClientDataSet.Create(nil; cdsTemp3:=TClientDataSet.Create(nil; sList:=TStringList.Create; try sSql:='SELECT * FROM Table1' sList.Add(sSql; sSql:='SELECT * FROM Table2' sList.Add(sSql; sSql:='SELECT * FROM Table3' sList.Add(sSql; /把第一條查詢語句的結(jié)果集存放到c

8、dsTemp1,把第二條查詢語句的結(jié)果集存放到cdsTemp2,依次類推存放順序 SelectDatas(cdsTemp1,cdsTemp2,cdsTemp3,sList; finally FreeAndNil(cdsTemp1; FreeAndNil(cdsTemp2; FreeAndNil(cdsTemp3; FreeAndNil(sList; end; except end; end; * 函數(shù)功能: 發(fā)送一條或多條update or insert or delete類型的SQL語句到應(yīng)用服務(wù)器執(zhí)行 函數(shù)聲明: function UpdateCommands(const AExecute

9、Text: WideString: integer;stdcall;external 'Communication.dll' 參數(shù)說明: - 參數(shù)名稱 描述 - AExecuteText AppServer能解析的SQL語句 - 函數(shù)說明: 正常返回0;異常返回非0;本函數(shù)主要供ApplyUpdates函數(shù)調(diào)用; 用例: * 函數(shù)功能: 把一般手動輸寫的SQL語句轉(zhuǎn)換為AppServer能解析的SQL語句; 函數(shù)聲明: function CreateCommand(var ACommandText:WideString:integer; stdcall;external 

10、9;Communication.dll' 參數(shù)說明: - 參數(shù)名稱 描述 - ACommandText 要執(zhí)行的SQL語句 - 函數(shù)說明: 正常返回0;異常返回非0;本函數(shù)主要是把SQL語句轉(zhuǎn)換為滿足UpdateCommands函數(shù)要求的SQL語句 用例: * 函數(shù)功能: 根據(jù)單個數(shù)據(jù)集的修改信息自動生成相應(yīng)SQL語句 函數(shù)聲明: function CreateCommands(ATableName: WideString;ACDS: TClientDataSet;var AExecuteText:WideString: integer; stdcall; external '

11、Communication.dll' 參數(shù)說明: - 參數(shù)名稱 描述 - ATableNames 數(shù)據(jù)集對應(yīng)的表名 - ACDS 修改過的數(shù)據(jù)集 - AExecuteText 存放對應(yīng)生成的SQL語句 - 函數(shù)說明: 正常返回0;異常返回非0; 本函數(shù)根據(jù)數(shù)據(jù)集中的修改信息可能自動生成Insert,Update,Delete類型的多條SQL語句. 用例: Result:=CreateCommands('TableName1',cds1,sSQL; 本用例會根據(jù)數(shù)據(jù)集的修改信息自動生成相應(yīng)SQL語句,這樣就完成了操作界面到SQL語句之間的直接映射. * 函數(shù)功能: 根據(jù)數(shù)

12、據(jù)集列表的修改信息自動生成相應(yīng)SQL語句 函數(shù)聲明: function CreateStatement(const ATableNames: array of string ;ACDS:array of TClientDataSet;var sSqlList:string: Boolean; 參數(shù)說明: - 參數(shù)名稱 描述 - - ATableNames 數(shù)據(jù)集列表對應(yīng)的表名列表 - ACDS 修改過的數(shù)據(jù)集列表 - sSqlList 存放對應(yīng)生成的SQL語句 - 函數(shù)說明: 成功返回true;失敗返回false 本函數(shù)可以和CreateCommand聯(lián)合使用生成更新語句集;然后調(diào)用Updat

13、eCommands進行事務(wù)處理 用例: 1>Result:=CreateStatement('TableName1','TableName2','TableName3','TableName4',cds1,cds2,cds3,cds4; 或者 2>Result:=CreateStatement('TableName1',cds1; 本用例會根據(jù)數(shù)據(jù)集列表中每個數(shù)據(jù)集的修改信息自動生成相應(yīng)SQL語句,這樣就完成了操作界面到SQL語句之間的直接映射. 其中用例2>與函數(shù)CreateCommands的功

14、能相同. * 函數(shù)功能: 更新多個數(shù)據(jù)集 函數(shù)聲明: function ApplyUpdates(const ATableNames: array of string ; ACDS:array of TClientDataSet: Boolean; 參數(shù)說明: - 參數(shù)名稱 描述 - ACDS 要更新的數(shù)據(jù)集列表 - ATableNames 要更新的表名列表 - 函數(shù)說明: 成功返回true;失敗返回false 表名列表與數(shù)據(jù)集列表應(yīng)該一一對應(yīng) 用例: Result:=ApplyUpdates('TableName1','TableName2','TableName3','TableName4', cds1,cds2,cds3,cds4; 本用例會根據(jù)數(shù)據(jù)集列表中每個數(shù)據(jù)集的修改信息自動生成相應(yīng)SQL語句,然后把所有的SQL語句一起發(fā)送到AppServer進行事務(wù)處理. 應(yīng)用服務(wù)器基于java 應(yīng)用服務(wù)器最重要的就是穩(wěn)定,所以應(yīng)用服務(wù)器應(yīng)該是無狀態(tài)的;然后是高效易于部署; java天生就是用來編寫服務(wù)器的;成熟的j2ee企業(yè)級應(yīng)用;豐富的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論