delphi+java三层开发架构系统的实现_第1页
delphi+java三层开发架构系统的实现_第2页
delphi+java三层开发架构系统的实现_第3页
delphi+java三层开发架构系统的实现_第4页
delphi+java三层开发架构系统的实现_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、delphi+java三层开发架构系统的实现 客户端基于delphi 1>选择基于阻塞模式的Indy通信套件作为通信工具;(可使delphi代码更简洁 2>选择tcp/ip作为通信协议;(可选择web service,http,主要看appserver的架设情况;甚至可以在tcp/ip的基础上自定义通信协议 3>选择XML或变长字符串或文件,内存流作为数据包传递信息; 数据节点的结构: |-|-|-|-| | 长度 |数据 |长度 |数据 | |-|-|-|-| 说明: 1. 长度为其后数据串的长度的长度串; 2. 数据采用变长方式组织; 一般数据包的结构: |-|-|-|-

2、|-|-|-|-| | 名称长度 |名称 |值长度 |数据值 | 名称长度 |名称 |值长度 |数据值 | |-|-|-|-|-|-|-|-| 4>查询数据:客户端发送查询命令到appserver,appserver解析命令;通过jdbc到数据库查询数据; appserver再把查询的数据打包为符合TClientDataSet.XMLData要求的XML数据包返回到客户端; 5>更新数据:利用TClientDataSet.Delta的属性直接映射为insert,update,delete类型的SQL语句,然后发送到Appserver进行事务处理; 6>接口规划: 函数功能:

3、发送操作命令和数据到应用服务器 函数声明: function StreamCommand(ASendText:WideString;ASendStream:TStream=nil:TStream;stdcall;external 'Communication.dll' 参数说明: - 参数名称 描述 - ASendText 要发送的字节数据(一般应包括命令信息 - ASendStream 要发送的内存流或文件流等数据(默认为nil - 函数说明:正常返回字节流数据(可能返回空串;异常返回nil;此函数一般供DLL中的接口函数调用; 用例:Result:=StreamComman

4、d('013SelectCommand:045SELECT * FROM CRM_CUSTOMER WHERE B_COMPANY=1 :' 这个语句的意思是发送一个查询命令到AppServer,命令的内容为SELECT * FROM CRM_CUSTOMER WHERE B_COMPANY=1; 如果命令能正确执行,那么AppServer会把查询的结果打包发送到客户端,以字节流的形式返回. 函数功能: 查询单个数据集 函数声明: function SelectData(ACDS: TClientDataSet;const ASelectText: string:Boolean

5、; 参数说明: - 参数名称 描述 - - ACDS 存放查询结果集的TClientDataSet - ASelectText 要发送的单条查询语句 - 函数说明: 成功返回true(包括只有数据元的空数据集;失败返回false 用例: Result:=SelectData(cdsTemp,'SELECT * FROM CRM_CUSTOMER'这个语句的意思是: 发送一个查询语句到AppServer,如果命令能正确执行,那么AppServer会把查询的结果集打包发送到客户端事先创建好的cdsTemp中. * 函数功能:查询多个数据集 函数声明:function SelectD

6、atas(ACDS:array of TClientDataSet;const ASelectText: TStringList:Boolean; 参数说明:- 参数名称 描述 - ACDS 存放查询结果集的多个TClientDataSet列表 - ASelectText 要发送的多条查询语句列表 - 函数说明:成功返回true(包括只有数据元的空数据集;失败返回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; /把第一条查询语句的结果集存放到c

8、dsTemp1,把第二条查询语句的结果集存放到cdsTemp2,依次类推存放顺序 SelectDatas(cdsTemp1,cdsTemp2,cdsTemp3,sList; finally FreeAndNil(cdsTemp1; FreeAndNil(cdsTemp2; FreeAndNil(cdsTemp3; FreeAndNil(sList; end; except end; end; * 函数功能: 发送一条或多条update or insert or delete类型的SQL语句到应用服务器执行 函数声明: function UpdateCommands(const AExecute

9、Text: WideString: integer;stdcall;external 'Communication.dll' 参数说明: - 参数名称 描述 - AExecuteText AppServer能解析的SQL语句 - 函数说明: 正常返回0;异常返回非0;本函数主要供ApplyUpdates函数调用; 用例: * 函数功能: 把一般手动输写的SQL语句转换为AppServer能解析的SQL语句; 函数声明: function CreateCommand(var ACommandText:WideString:integer; stdcall;external 

10、9;Communication.dll' 参数说明: - 参数名称 描述 - ACommandText 要执行的SQL语句 - 函数说明: 正常返回0;异常返回非0;本函数主要是把SQL语句转换为满足UpdateCommands函数要求的SQL语句 用例: * 函数功能: 根据单个数据集的修改信息自动生成相应SQL语句 函数声明: function CreateCommands(ATableName: WideString;ACDS: TClientDataSet;var AExecuteText:WideString: integer; stdcall; external '

11、Communication.dll' 参数说明: - 参数名称 描述 - ATableNames 数据集对应的表名 - ACDS 修改过的数据集 - AExecuteText 存放对应生成的SQL语句 - 函数说明: 正常返回0;异常返回非0; 本函数根据数据集中的修改信息可能自动生成Insert,Update,Delete类型的多条SQL语句. 用例: Result:=CreateCommands('TableName1',cds1,sSQL; 本用例会根据数据集的修改信息自动生成相应SQL语句,这样就完成了操作界面到SQL语句之间的直接映射. * 函数功能: 根据数

12、据集列表的修改信息自动生成相应SQL语句 函数声明: function CreateStatement(const ATableNames: array of string ;ACDS:array of TClientDataSet;var sSqlList:string: Boolean; 参数说明: - 参数名称 描述 - - ATableNames 数据集列表对应的表名列表 - ACDS 修改过的数据集列表 - sSqlList 存放对应生成的SQL语句 - 函数说明: 成功返回true;失败返回false 本函数可以和CreateCommand联合使用生成更新语句集;然后调用Updat

13、eCommands进行事务处理 用例: 1>Result:=CreateStatement('TableName1','TableName2','TableName3','TableName4',cds1,cds2,cds3,cds4; 或者 2>Result:=CreateStatement('TableName1',cds1; 本用例会根据数据集列表中每个数据集的修改信息自动生成相应SQL语句,这样就完成了操作界面到SQL语句之间的直接映射. 其中用例2>与函数CreateCommands的功

14、能相同. * 函数功能: 更新多个数据集 函数声明: function ApplyUpdates(const ATableNames: array of string ; ACDS:array of TClientDataSet: Boolean; 参数说明: - 参数名称 描述 - ACDS 要更新的数据集列表 - ATableNames 要更新的表名列表 - 函数说明: 成功返回true;失败返回false 表名列表与数据集列表应该一一对应 用例: Result:=ApplyUpdates('TableName1','TableName2','TableName3','TableName4', cds1,cds2,cds3,cds4; 本用例会根据数据集列表中每个数据集的修改信息自动生成相应SQL语句,然后把所有的SQL语句一起发送到AppServer进行事务处理. 应用服务器基于java 应用服务器最重要的就是稳定,所以应用服务器应该是无状态的;然后是高效易于部署; java天生就是用来编写服务器的;成熟的j2ee企业级应用;丰富的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论