Java服务器与DELPHI客户端的集成 ( 积分: 202 )

  • Thread starter 沙隆巴斯的主人
  • Start date

沙隆巴斯的主人

Unregistered / Unconfirmed
GUEST, unregistred user!
Java在企业级应用中的优势是巨大的,J2EE规范几乎涵盖了从DO、BO到PO的各个方面。在DO与BO的层次,J2EE近乎完美。在PO层次,SERVLET与JSP提供了浏览器的表现层;而在窗口表现层上,JAVA的AWT却还有待提高。
作为一个DELPHI程序员,一直在考虑DELPHI的优势何在?毫无疑问,DELPHI在做WIN32界面的时候,是近乎完美的;但在做数据对象层(DO)与业务逻辑层(BO)的时候,DELPHI的劣势就表现出来了。我也尝试过COM/COM+以及MIDAS等等,但这些体系框架都难以真正负担企业级的关键任务。
当把注意力投向J2EE的时候,在DELPHI里的难题都迎刃而解了:在J2EE服务器里面,DO与BO得到了近乎完美发解决,特别是在EJB3的框架里面,它们以异乎寻常的简洁形式提供了全面而高效的解决方案。连DO层的开发人员都几乎可以完全与SQL脱钩,他们仿佛在写最简单的JAVA对象(所谓POJO);而BO的开发人员可以通过简单的EJB QL(EJB QL远比SQL来得简单,虽然性能上要付出额外代价)来取得实体对象,然后构建强大的业务逻辑层。在这两个领域(DO与BO),J2EE有这DELPHI望尘莫及的优势,新的J2EE做到了简洁与强大的完美结合,J2EE现在正在发展进入其壮年时代:几乎面面俱到且都近乎完美。
当然,在WIN32的表现层上,DELPHI比J2EE要有优势。如何将他们结合起来,取长补短,将是件有实际意义的事情。
 

沙隆巴斯的主人

Unregistered / Unconfirmed
GUEST, unregistred user!
Java在企业级应用中的优势是巨大的,J2EE规范几乎涵盖了从DO、BO到PO的各个方面。在DO与BO的层次,J2EE近乎完美。在PO层次,SERVLET与JSP提供了浏览器的表现层;而在窗口表现层上,JAVA的AWT却还有待提高。
作为一个DELPHI程序员,一直在考虑DELPHI的优势何在?毫无疑问,DELPHI在做WIN32界面的时候,是近乎完美的;但在做数据对象层(DO)与业务逻辑层(BO)的时候,DELPHI的劣势就表现出来了。我也尝试过COM/COM+以及MIDAS等等,但这些体系框架都难以真正负担企业级的关键任务。
当把注意力投向J2EE的时候,在DELPHI里的难题都迎刃而解了:在J2EE服务器里面,DO与BO得到了近乎完美发解决,特别是在EJB3的框架里面,它们以异乎寻常的简洁形式提供了全面而高效的解决方案。连DO层的开发人员都几乎可以完全与SQL脱钩,他们仿佛在写最简单的JAVA对象(所谓POJO);而BO的开发人员可以通过简单的EJB QL(EJB QL远比SQL来得简单,虽然性能上要付出额外代价)来取得实体对象,然后构建强大的业务逻辑层。在这两个领域(DO与BO),J2EE有这DELPHI望尘莫及的优势,新的J2EE做到了简洁与强大的完美结合,J2EE现在正在发展进入其壮年时代:几乎面面俱到且都近乎完美。
当然,在WIN32的表现层上,DELPHI比J2EE要有优势。如何将他们结合起来,取长补短,将是件有实际意义的事情。
 

沙隆巴斯的主人

Unregistered / Unconfirmed
GUEST, unregistred user!
现在我采用的是WEB SERVICE来实现这两者的连接。
方案采用的是JBOSS(4.0.3sp1 + EJB3 RC3)作为J2EE服务器,由于JBOSS现在还不支持将EJB3的STATELESS SESSION BEAN直接发布成WEB SERVICE(JBOSS将在5。0的版本中支持),所以得另外想办法实现WEB SERVICE。在此有两个办法,一个是用JBOSS中的EJB2。1来发布成WEB SERVICE, EJB2。1访问EJB3,并作为它的一个PROXY,这样的思路也恰恰就是所谓发PROXY设计模式,我最先就是这样实现的,并成功发布出了WEB SERVICE。然而,这个WEB SERVICE与DELPHI的结合有些问题,调试多次都没有完全成功。第2个方法是利用开源的AXIS来进行WEB SERVICE的发布,在AXIS中的对象通过JNDI来访问远程的JBOSS服务器中的WJB3对象,并作为其PROXY。这个方法比较曲折,但由于早前就完全调通过AXIS与DELPHI的连接,因此,可以肯定是可行的。经过一系列的调试,终于是完全成功。
 

沙隆巴斯的主人

Unregistered / Unconfirmed
GUEST, unregistred user!
希望我的这些经验可以给有类似需求的人一些帮助,毕竟这有助于大型项目的实现:JAVA负责实现后台,而DELPHI实现前台,各承担各自擅长的任务。

而且AXIS在其将发布的2。0版本里面将包含回调,这意味着我们有可能实现服务器主动向客户端的推数据,这将是个非常诱人的特性。
另外,JBOSS是GPL的,它可以完美发跑在LINUX上面,同时它支持的包括MYSQL与postgresql等按照GPL发布的数据库,而且其开发环境也是基于ECLIPSE的,这就意外着整个后台从操作系统到数据库,到APPSERVER,到开发IDE,全部是开源且免费的,你不用担心有人给发律师信。

JBOSS是支持集群的,它的集群可以实现 FAIL OVER 与 BALANCE的;同时,LINUX以及MYSQL与postgresql都支持集群,这也为其作为企业级关键应用创造了条件。
 

沙隆巴斯的主人

Unregistered / Unconfirmed
GUEST, unregistred user!
在以上的模式中,DELPHI仅仅实现用户界面。然而,这与一般的所谓B/S模式还是有区别的。
B/S模式的表现层是在WEB SERVER与浏览器两个部分共同实现的。WEB SERVER传递给浏览器的数据由两个部分组成:“内容”与“形式”;浏览器则按照指定的“形式”来展现给定的“内容”。这样的好处是不管是“形式”还是“内容”,都在服务器端实现,这样客户端的部署就非常简单了,几乎是零部署。
而前面介绍的DELPHI客户端的模式,依然是传统的形式:服务器只传递“内容”,表现形式是在客户端里面固化的。这样发好处是:客户端可以表现很复杂的形式,表现能力比浏览器要强;坏处是:客户端要部署,而当客户端数量巨大的时候,这将是场恶梦。
 

沙隆巴斯的主人

Unregistered / Unconfirmed
GUEST, unregistred user!
当然,客户端部署的恶梦也是有办法克服的,例如,“浩方对战平台”的客户端。
浩方的做法应该是维护了一个现有“客户端组件”列表,然后与服务器端最新“客户端组件”列表进行比对,然后生成更新列表,再进行下载更新。
如此一来,客户端部署问题也可以在很大程度上得到解决。
 
W

wangzhen783

Unregistered / Unconfirmed
GUEST, unregistred user!
刚开始学java,帮不上忙。。。。
帮LZ顶。。。
 
J

John_

Unregistered / Unconfirmed
GUEST, unregistred user!
不是吧﹐太深奧﹐什么時候來搞個講座﹗﹗﹗
 

无头骑士

Unregistered / Unconfirmed
GUEST, unregistred user!
楼主:
这个问题我已经思考了半年多,查资料也很多,但一直没能取得进展(主要是工作忙,然后对DELPHI的SOAP不太熟悉)。
如果楼主愿意和我一起研究这个问题的话,加我QQ(7231715,一般都在线的,只是隐身)。
现在我们做的系统是WEBLOGIC+JAVA(EJB)+PB的,我现在就在想怎么让DELPHI来代替PB,毕竟我不太喜欢PB。
 

沙隆巴斯的主人

Unregistered / Unconfirmed
GUEST, unregistred user!
to 无头骑士:
DELPHI端的作为客户端是非常简单的。
其实你能够用PB走通,DELPHI也是一样的。
我的QQ:511690
 
L

lxw5214

Unregistered / Unconfirmed
GUEST, unregistred user!
学习一下子
 
P

piao40993470

Unregistered / Unconfirmed
GUEST, unregistred user!
方向很重要,特别是基于WEB SERVICE的应用,关注该贴
 
A

alllovewg

Unregistered / Unconfirmed
GUEST, unregistred user!
真应该好好学习一下.
收藏中.
 
K

kkkchenA

Unregistered / Unconfirmed
GUEST, unregistred user!
楼主说得很好,现在很多公司好像都用这样的方式来开发一些大的应用。
有介绍Delphi跟AXIS如何结合开发的例子吗?
 
B

BlueVoice

Unregistered / Unconfirmed
GUEST, unregistred user!
关注...
请楼主给点详细资料 谢谢
 
L

leonv

Unregistered / Unconfirmed
GUEST, unregistred user!
呵呵,关心中...
感谢LZ分享自己成功的经验!
 
Z

zbird

Unregistered / Unconfirmed
GUEST, unregistred user!
我们公司也是用JAVA做的server做的客户端。
WEB SERVICE使用很方便,只是性能太低。
如果客户端和服务端存在大量的通信的话还是直接采用socket连接比较好。
当然在大多数情况下通过一些简单的优化后,在一般的系统中采用WEB SERVICE都不会有太大问题。
PS:在csdn上看到有说ice,好像性能不错的样子,而且支持JAVA、C++、PYTHON等多种语言。不过没看到对delphi的支持,而且是商业软件。
 
Z

zbird

Unregistered / Unconfirmed
GUEST, unregistred user!
WEB SERVICE听起来好像很恐怖的样子。
但如果当你真正用起来的时候你就会发现WEB SERVICE是如此的简单。
WEB SERVICE本来就是用来简化开发的,如果复杂了谁用啊[:)]。
 

寻路

Unregistered / Unconfirmed
GUEST, unregistred user!
是啊,技术本来很简单,被渲染了,就变得神秘了!我在的部门早在2002年的时候就已经实现了,后台用JAVA.前台可以用任何支持COM的IDE.VC/BCB/PB/DELPHI/VB都是可以的.
 
Top