技术开发 频道

SOA实施:桥接.NET与Java程序

【IT168 技术文章】

  Swordfish(箭鱼项目)可以说是德国邮政(Deutsche Post)几年前进行大规模IT基础设施现代化改造项目的副产品。这一基于德国邮政技术的架构采用了三个热门技术形成SOA运行时间平台:服务组件体系架构(SCA)、Java企业整合(JBI)和开放服务网关倡议(OSGi)。公司技术系统架构(TeSA)部门的集成专家Steven Engelhardt说,公司采用了一套适当的部署项目并重用业务服务,进而完成对基础设施的改造,最终获得一个包含SOA平台所需的各种组成部分的SOA框架。

  此前,为统一其各业务部门和子公司的企业平台标准,德国邮政采用了基于Java的企业应用集成(EAI)方案。但正如Engelhardt所说,没有任何IT环境是匀质的(homogeneous)。他说,“当时,我们向SOA转型过程中使用的系统集成平台主要是基于Java的。直到2005年末,我们还只有一个.NET应用程序,这是一个关键的用于SOA集成的客户关系管理程序。”

  公司要求Engelhardt在无需重新部署ESB的情况下将此应用程序集成到基于Java的基础设施中。Engelhardt说,这个由Glinz Covis公司开发的大型CRM系统是德国邮政进行销售和市场操作的关键。它必须能够从公司的其它系统中获取数据,比如客户联系信息库和中央客户数据库,“这个CRM系统必须能够与IT环境下的许多系统进行通信。”

  然后,便是与Codemesh公司的合作。Codemesh公司是一家大规模过程集成技术供应商。该公司开发了用于Java和.NET程序、Java与C++程序、以及JMS与C++和.NET程序之间互相集成的产品。德国邮政此前就曾使用其JunC++ion方案将一个用C++编写的客户投诉管理系统集成到服务主干网中。

连接.NET与Java的桥梁

  对于这次从.NET向Java的集成,德国邮政采用了Codemesh的新产品:JuggerNET。

  Codemesh总裁Alex Krapf说,“当.NET首次出现时,我们还怀疑过它是否有能力继续发展。但我们很快就改变了主意,决定开发.NET版本的JunC++ion。”

  JuggerNET就是为.NET开发人员准备的开发工具,就像为C++开发人员准备的JunC++ion一样:它可以为任意Java类生成.NET绑定(binding),可以用来发布.NET版本的Java API,并为Java API生成COM绑定,以及将.NET客户端集成到JMS或EJB程序中。

  JuggerNET附带一个代码生成程序,可以将输入的Java字节码转为能在各平台和编译器上移植的C#源文件、批处理编译文件和项目文件。软件包中还包含两种运行时程序库:强名称类(strongly named)和非强名称类。它们构成了Java和.NET集成的抽象层。JuggerNET运行时程序库在CLR过程中使用P/Invoke和JNI执行原始的Java程序。运行时程序库已作为完美的集成方案中的一部分加入到软件包中。

  JuggerNET中还包含一个可选的共享JVM服务器,无需Java运行环境(JRE)便可在部署在运行.NET代码的主机上。

  JuggerNET可以从Java代码中生成.NET的桥接组件,这将减少甚至完全消除对编写集成代码的需求。它为Java类提供了质量高、可读性强的.NET代理服务器,可以用编码器可以处理集成代码。

从概念到实施

  2005年末,Engelhardt团队以一个简单的观点验证程序开始了他们的集成项目。Engelhardt说,“那时我的任务就是搞清楚集成的原理,以及集成完全发挥效应需要多少时间。以前的我完全生活在Java的世界中,所以根本没有任何.NET方面的经验。但我们只用了两三周的时间就完成了(PoF),这让我很吃惊。”

  从2006年初开始,德国邮政TeSA部门已经开始应用集成进入产品开发阶段。Engelhardt解释道,“我们当时已经使用JuggerNET为一个接口部署了集成初期的几个部分。在剩下的一年时间里就是简单地插入越来越多的接口和相应的IT系统。”

  能够生成将Java集成到.NET开发环境所需的类是JuggerNET最受Engelhardt喜欢的地方之一。他说,“它为你提供了GUI工具。你只要插入.NET核心所需的Java类,它就能为你生成任何东西。这样就可以工作在.NET的环境下,而无需为与Java相关的任何事费心。很直观,用起来也很简单。”
 

0
相关文章