结合Delphi 客户端桌面开发的优势和Java的稳健强壮特性,采用Delphi Client + Java Server的系统架构应该是很有市场的,经过一段时间的实际项目实践,实现架构是这么实现的,供讨论:


1.后台应用服务层可采用基于Spring+Hibernate的轻量级J2EE实现,并使用Apache XML-RPC 提供客户端调用接口;
2.前台采用 Delphi XML-RPC 调用服务器端业务实现接口;
3.后台和前台分别实现XML-对象序列化;
4、可选用SLL,可支持数据压缩;(这个需要对Delphi XML-RPC 实现作一些扩展)


系统架构实现基于几点考虑:
1、XML-RPC 同SOAP比较:由于Delphi SOAP客户端存在一些性能问题和同Java实现存在一些兼容性问题,因此考虑采用XML-RPC 实现,而且XML-RPC 实现同SOAP实现相比较,性能要好很多;
2、XML-RPC 同SOCKET比较:采用HTTP协议可以有效穿透不同网络防火墙;
3、采用XML格式交换数据,而不采用XML-RPC 标准格式交换数据,主要是由于XML-RPC 格式比较简单,复杂的数据格式很难满足需求,直接使用对象XML数据流方式,有利于系统扩展;


使用的第三方软件列表(开源产品,可用于商业开发)

Spring Framework:http://www.springframework.org 
 Hibernate ORM:http://www.hibernate.org 
 Apache XML-RPC :http://ws.apache.org/xmlrpc/ 
Delphi XML-RPC :http://sourceforge.net/projects/delphixml-rpc/ 
Delphi

 

重点几个问题说明:
1、采用XML-RPC 机制实现数据交换
2、客户端采用Cookie机制实现保存客户端登录相关信息,Delphi XML-RPC 实现应用了Indy Cookie VCL,因此我们不需要重复发明轮子
3、Java 端 XML-RPC 实现比较多,Apahce XML-RPC 是不错的选择
4、客户端和服务器端各实现一套 对象-XML序列化/反序列化,客户端调用请求前,将对象转换为XML数据流并封装为XML-RPC

 

客户端通过XMLHTTP进行请求处理的技术 :采用XML-RPC方式处理客户端和服务器端交互
客户端和服务器端传递的数据格式 :采用XML格式交换数据
如何处理上下文信息 :客户端采用Cookie机制来保存上下文关系,服务器端可以采用HTTP Session方式来来保存客户端信息,类似于浏览器
如何设计服务器端的接口 :使用 XML-RPC方式提供最原始、最简单的RPC方式调用
如何利用XML数据源进行客户端数据处理 :XML只负责数据传输,客户端和服务器还是按对象方式交换数据;
客户端分层结构考虑:Form(窗体显示层)/Entity(数据对象层)/RPC Proxy(远程方法调用代理层),其中Entity实现对象序列化和反序列化接口;

服务器端分层结构考虑:RPC Action(XML-RPC Web Service 接口)/Business Service + DTO(数据库事务在这一层)/DAO+Model 数据访问层