精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (2)
|
|
---|---|
作者 | 正文 |
发表时间:2011-02-08
flashing 写道 json是给浏览器用的,这种情况的异构系统交互,并且你打算将来让浏览器也可以交互,ws才是正道。
当然了,如果不打算兼容浏览器了,各种更高效的通信框架一大把呢,ice或者干脆google protobuf ICE没有对delphi的直接支持。最近乎的是c++ builder..版本还不能太旧了.... |
|
返回顶楼 | |
发表时间:2011-02-08
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可以在客户端解析,没有做大量数据的测试,期待有过类似经验者给予指导! 这个思路可以,有公司的CS产品是这么做的,有7、8年应用历史了。最早服务端还是php,后来开发了java版。 性能和稳定性不错。 自己包装开发一个delphi的http组件,用post与java服务器通信。delphi要注意多线程的处理,服务端用jsp或servlet接收都行,协议简单点,能识别key-value对就基本够用了,复杂点可以带上数据类型,或者用hessian协议,再包装包装用反射实现自动数据拆包解包等等。 至于安全,可以用类似bluefish这样的对称加密算法对二进制流加密,密钥可以是事先分发好的,也可以是通过非对称加密协商确定。
|
|
返回顶楼 | |
发表时间:2011-02-08
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、可以自己处理,走socket或http协议,Indy或者ICS都可以;也有现成的中间件,比如:remobjects,很强大 2、http协议的安全可以通过对数据加密或走https 3、有些控件可以用 |
|
返回顶楼 | |
发表时间:2011-02-08
首先感谢楼上各位朋友的回复,我首先肯定了我的开发结构是很可可取的!我开始怀疑是不是使用一个IdHttp组件就可以完成Get/Post,客户端和服务器端使用JSON数据进行交互,这样就保证数据量最小化,同时也能缓解网络流量的问题,我不知道这样的思路会有哪些弊端,请各位同仁给予经验上的指导!谢谢
|
|
返回顶楼 | |
发表时间:2011-02-08
最后修改:2011-02-08
jjx 写道 前年做过一个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,使用了动态编译程序下载的模式,维护不同语言感觉会很累 图文混编应该是桌面应用的一个弱项吧,嵌入office,也需要本地安装office支持,最好的是DSOFramer控件,而这个控件还存在bug,笔者已经重写了DSOFramer控件,这需要本地Office支持,不是好的解决方案,不知道有没有其他好的解决办法! ============================ 同时希望投了隐藏贴的朋友给我指导,这样的技术方案应该是很成熟的,但网络上没有很好的解决方案,不知道这位朋友为什么投了隐藏贴,可能是很高很高的人,不过更大的是一个垃圾人,呵呵,除非他给大家一个很完美的解决方案和代码实践,否则大家一起鄙视他这个垃圾人! |
|
返回顶楼 | |
发表时间:2011-02-08
现在公司就在用,很稳定,支持客户端也比以前midas的多。。而且可以和TClientDataSet完美结合。
|
|
返回顶楼 | |
发表时间:2011-02-08
1、Delphi如何像服务器端发送并读取数据;
服务器端是java,通过xmlrpc来实现,客户端将生成的sql语句发送到服务器端,服务器端执行sql,结构通过xmlrpc返回,这是早期,现在可以采用json来实现 2、http协议是否能够满足数据的安全性 delphi和java共用一套加解密的算法,没有可以找我 3、delphi客户端的图文混编编辑器如何实现? delphi客户端可以将文件保存成xml结构文件的形式(具体数据生成压缩包),将文件上传,服务器端接受到此种文件按规则进行解析处理。 |
|
返回顶楼 | |
发表时间:2011-02-08
试试phprpc
|
|
返回顶楼 | |
发表时间:2011-02-09
我们公司的产品曾经采用的架构和楼主描述的差不多,只不过前端应用没有那么复杂而已。
前端,我们采用delphi做客户端,前后通信使用我们自己实现的一套通信协议,其实也就是对http协议进行了简化,以数据通信为目的,把一些不要用的http信息头去掉,另外进行了压缩和加密。 后端采用spring为核心的java技术实现。 |
|
返回顶楼 | |
发表时间:2011-02-09
个人也觉得嵌入office不如嵌入webbrower。
一般来说.net c++很多流程,图文混排,都是这个思路。 |
|
返回顶楼 | |