论坛首页 Java企业应用论坛

重新讨论一个老话题Delphi+Java做C/S结构,期望在这里形成一个比较好的解决方案及具体实现(开篇)

浏览 24573 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (2)
作者 正文
   发表时间:2011-02-07   最后修改:2011-02-07

      好几年前,论坛中有讨论到采用“客户端用delphi写,服务器端用java写”的异构语言方案,关于这个方案我看了很精彩,基本谈清了思路,缺少的是详细的解决方案以及代码实现!公司有个项目,客户端有很复杂的操作,尤其是三维地理信息的运用,完全使用B/S结构到目前为止基本不能实现客户的要求,介此,研究决定采用Delphi作为客户端,服务器端采用J2EE来实现,一来完成客户的需求,二来为下步全部升级为B/S结构做充分的准备工作!

      看了JE上对Delphi、Java异构语言做C/S结构的精彩讨论,初步决定Delphi、Java直接采用Json数据来交换数据,采用HTTP协议,可结合安全套接字实现交换数据安全性,服务器端通过json-rpc方式export远程调用接口,结合delphi indy session控件实现cookie机制。Java端采用Spring3+JPA作为基础结构,使用JabSorb作为交互基础框架,客户端采用Delphi Indy组件结合JSON Toolkit框架完成JSON的数据解析。

     由于是第一次采用这种开发方式,很多初级问题都需要解决,初步提出以下需要解决的问题:

     1、Delphi如何像服务器端发送并读取数据;

     2、http协议是否能够满足数据的安全性

     3、delphi客户端的图文混编编辑器如何实现?

   发表时间:2011-02-07  
erikchang 写道

      好几年前,论坛中有讨论到采用“客户端用delphi写,服务器端用java写”的异构语言方案,关于这个方案我看了很精彩,基本谈清了思路,缺少的是详细的解决方案以及代码实现!公司有个项目,客户端有很复杂的操作,尤其是三维地理信息的运用,完全使用B/S结构到目前为止基本不能实现客户的要求,介此,研究决定采用Delphi作为客户端,服务器端采用J2EE来实现,一来完成客户的需求,二来为下步全部升级为B/S结构做充分的准备工作!

      看了JE上对Delphi、Java异构语言做C/S结构的精彩讨论,初步决定Delphi、Java直接采用Json数据来交换数据,采用HTTP协议,可结合安全套接字实现交换数据安全性,服务器端通过json-rpc方式export远程调用接口,结合delphi indy session控件实现cookie机制。Java端采用Spring3+JPA作为基础结构,使用JabSorb作为交互基础框架,客户端采用Delphi Indy组件结合JSON Toolkit框架完成JSON的数据解析。

     由于是第一次采用这种开发方式,很多初级问题都需要解决,初步提出以下需要解决的问题:

     1、Delphi如何像服务器端发送并读取数据;

     2、http协议是否能够满足数据的安全性

     3、delphi客户端的图文混编编辑器如何实现?


1、建议直接用ws或rest 2、使用ssl或者 ws-security 两方面的安全性,基于用户权限的访问,传输过程的加密 3、嵌入一个webbrower之类的activex
0 请登录后投票
   发表时间:2011-02-07  
kimmking 写道
erikchang 写道

      好几年前,论坛中有讨论到采用“客户端用delphi写,服务器端用java写”的异构语言方案,关于这个方案我看了很精彩,基本谈清了思路,缺少的是详细的解决方案以及代码实现!公司有个项目,客户端有很复杂的操作,尤其是三维地理信息的运用,完全使用B/S结构到目前为止基本不能实现客户的要求,介此,研究决定采用Delphi作为客户端,服务器端采用J2EE来实现,一来完成客户的需求,二来为下步全部升级为B/S结构做充分的准备工作!

      看了JE上对Delphi、Java异构语言做C/S结构的精彩讨论,初步决定Delphi、Java直接采用Json数据来交换数据,采用HTTP协议,可结合安全套接字实现交换数据安全性,服务器端通过json-rpc方式export远程调用接口,结合delphi indy session控件实现cookie机制。Java端采用Spring3+JPA作为基础结构,使用JabSorb作为交互基础框架,客户端采用Delphi Indy组件结合JSON Toolkit框架完成JSON的数据解析。

     由于是第一次采用这种开发方式,很多初级问题都需要解决,初步提出以下需要解决的问题:

     1、Delphi如何像服务器端发送并读取数据;

     2、http协议是否能够满足数据的安全性

     3、delphi客户端的图文混编编辑器如何实现?


1、建议直接用ws或rest 2、使用ssl或者 ws-security 两方面的安全性,基于用户权限的访问,传输过程的加密 3、嵌入一个webbrower之类的activex

 1、不看好webservices,太重量级了,很多事情复杂化了,这样不利于软件开发进度控制,rest呢,应该是居于B/S的吧

 2、安全方便考虑采取证书,同时在服务器端采用Spring Security控制权限,应该能够满足要求

 3、拒绝ActiveX

 

看了一下Indy组件,同时做了一些小尝试,初步看来,使用IdHttp组件可以完成表单的Post功能,JSON-RPC可以在客户端解析,没有做大量数据的测试,期待有过类似经验者给予指导!

0 请登录后投票
   发表时间:2011-02-07  
erikchang 写道
kimmking 写道
erikchang 写道

      好几年前,论坛中有讨论到采用“客户端用delphi写,服务器端用java写”的异构语言方案,关于这个方案我看了很精彩,基本谈清了思路,缺少的是详细的解决方案以及代码实现!公司有个项目,客户端有很复杂的操作,尤其是三维地理信息的运用,完全使用B/S结构到目前为止基本不能实现客户的要求,介此,研究决定采用Delphi作为客户端,服务器端采用J2EE来实现,一来完成客户的需求,二来为下步全部升级为B/S结构做充分的准备工作!

      看了JE上对Delphi、Java异构语言做C/S结构的精彩讨论,初步决定Delphi、Java直接采用Json数据来交换数据,采用HTTP协议,可结合安全套接字实现交换数据安全性,服务器端通过json-rpc方式export远程调用接口,结合delphi indy session控件实现cookie机制。Java端采用Spring3+JPA作为基础结构,使用JabSorb作为交互基础框架,客户端采用Delphi Indy组件结合JSON Toolkit框架完成JSON的数据解析。

     由于是第一次采用这种开发方式,很多初级问题都需要解决,初步提出以下需要解决的问题:

     1、Delphi如何像服务器端发送并读取数据;

     2、http协议是否能够满足数据的安全性

     3、delphi客户端的图文混编编辑器如何实现?


1、建议直接用ws或rest 2、使用ssl或者 ws-security 两方面的安全性,基于用户权限的访问,传输过程的加密 3、嵌入一个webbrower之类的activex

 1、不看好webservices,太重量级了,很多事情复杂化了,这样不利于软件开发进度控制,rest呢,应该是居于B/S的吧

 2、安全方便考虑采取证书,同时在服务器端采用Spring Security控制权限,应该能够满足要求

 3、拒绝ActiveX

 

看了一下Indy组件,同时做了一些小尝试,初步看来,使用IdHttp组件可以完成表单的Post功能,JSON-RPC可以在客户端解析,没有做大量数据的测试,期待有过类似经验者给予指导!


后台使用ss做权限系统,需要在客户端中保存session,session的保存和传递如何实现最合适又是摆在面前的一个问题!
0 请登录后投票
   发表时间:2011-02-07  
delphi里的图文混排编辑器很多的
可以到这边看看
http://www.2ccc.com/downloads.asp?subcatalogid=209&pageid=1

你说的session问题,建议你继承indy http的组件自己自定义一个,然后在自定义组件里处理这些细节问题。
0 请登录后投票
   发表时间:2011-02-08   最后修改:2011-02-08
前年做过一个delphi +python django的原型,使用的是delphi superobject +ms xmlhttprequest, lz第一个问题应该没什么问题。 这个连接可以参考一下 http://theroadtodelphi.wordpress.com/2010/12/04/using-the-google-translate-api-v2-labs-from-delphi/

第二个问题可以通过自定义协议/https或使用一些第三方的协议,如phprpc之类的.这个安全处理理论上同浏览器中用js调用服务端所需要的安全处理是类似的

第三绝对是delphi的强项,我知道的有richview和wptools,其他的应该还有很多,既然用delphi了,嵌入office都不是问题了


会话就很简单了,自己处理也一样,无非是在服务器端维护一个guid的列表,在所有的方法中传递guid而已(通过类体系简化这个操作)


另外,delphi的数据绑定体系主要是tdataset,所以你要建立个自定义的jsondataset来处理绑定,最好能抽象化并同服务器端数据更新结合起来,这可能需要几天的工作量,不过以后就轻松了


不过我最后还是使用的全delphi方案,用了activeform+桌面和remobjects dataabstract,使用了动态编译程序下载的模式,维护不同语言感觉会很累

0 请登录后投票
   发表时间:2011-02-08  
做过一个项目,是.Net WCF + Delphi COM+, 非常成熟的应用,不过跟楼主的方式相反:.Net做网站的Client端,Delphi做Server端。

不过仍然看好Web Service的应用,毕竟是成熟项目,并没感觉到有多笨重。
0 请登录后投票
   发表时间:2011-02-08  
json是给浏览器用的,这种情况的异构系统交互,并且你打算将来让浏览器也可以交互,ws才是正道。
当然了,如果不打算兼容浏览器了,各种更高效的通信框架一大把呢,ice或者干脆google protobuf
0 请登录后投票
   发表时间:2011-02-08  
我觉得如果你做CS的话,没必要用HTTP协议了,可以自己定义一些协议,这样可以做到尽可能的减少协议信息里面的冗余内容,提高效率。
0 请登录后投票
   发表时间:2011-02-08   最后修改:2011-02-08
引用
看了一下Indy组件,同时做了一些小尝试,初步看来,使用IdHttp组件可以完成表单的Post功能,JSON-RPC可以在客户端解析,没有做大量数据的测试,期待有过类似经验者给予指导!

没啥问题啊。就是多线程不要共用一个组件。或者把IdHttp包装一下,按线程创建。
session你可以自建表。也可以利用http header 的cookie来维持传统的http session
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics