云南省医疗保险系统与HIS系统直通式接口可行性方案研究(非官方文档)

云南省医疗保险系统与HIS系统直通式接口可行性方案研究(非官方文档)

基于Spring的远程调用技术案例剖析之

eRedLab-JaNer eRedLab@gmail.com
关键词: WebService RMI EJB HTTP-invoker Hessian/Burlap 异构系统集成
说明:本文只分析各种远程调用方法的特性并给出一个适合于本案例的解决方案。不讨论创建和访问各种远程服务的具体实现方法。

引言
随着计算机科学与技术的发展以及各种应用逻辑渐趋复杂化和多元化,异构系统之间的无缝集成成为当前大型级九五至尊娱乐九五至尊娱乐九五至尊娱乐软件下载下载下载应用中的一个重要研究课题,也是目前提升九五至尊娱乐九五至尊娱乐九五至尊娱乐软件下载下载下载自身价值有效整合现有软硬件资源的一个重要瓶颈。因此研究当前主流远程调用技术实现异构系统的无缝集成具有很大的现实意义与利用价值。

1、案例背景介绍
云南省医疗保险支付系统:此系统是一套基于J2EE工业标准的三层模型B/S结构的分布式医疗保险实时支付系统。其核心开源项目包括:
视图表现层:Struts-Layout及其扩展
控制层:Struts
模型层:Spring iBatis(数据持久化模型)
医院HIS系统:由第三方九五至尊娱乐九五至尊娱乐九五至尊娱乐软件下载下载下载厂商开发的医院管理信息系统。一般均采用Delphi或VB开发的基于C/S模型的两层架构的Win32窗口程序。
直通式(在线)接口:由于应用逻辑的需要,医院HIS系统需调用省医保支付系统的结算办法进行病人的费用结算。本文就将结合案例实际情况针对医保支付系统在当前网络环境下如何选择一个可行的远程调用解决方案开放一些服务供HIS系统访问以完成这两种异构系统之间的无缝集成做深入的探讨和分析。

2、远程访问技术背景
远程调用是客户端应用和服务端之间的会话。在客户端上所需要的某些功能并不包括在该应用的职能范围内,所以应用向能提供这些功能的其他系统寻求帮助。(比如:我们案例中的HIS系统就需要调用医保支付系统的结算办法进行费用结算)远程的应用通过远程服务把这些功能开放出来。作为一个Java开发者,有好几种可以利用的远程技术:
远程方法调用(RMI)
Caucho的Hessian和Burlap
Spring自己的HTTP invoker
企业Java Bean(EJB)
Web Service
不管选择哪种远程技术,Spring对访问和创建远程服务都提供了丰富的支持。本文就将结合此案例实际分析如何选用合适的技术方案实现基于Spring的远程调用。

2.1 远程方法调用(RMI)
RMI首先在JDK1.1被引入到Java平台——提供给Java程序员一种强大的方法来实现Java程序之间的交互。开发和访问RMI都非常复杂,但值得庆幸的是,Spring提供了一个代理工厂Bean,能让你把RMI服务想本地JavaBean那样置入到你的Spring运用中,大大简化了RMI模式。Spring还提供了一个远程输出器,用来简化把Spring管理的Bean转换到RMI服务的工作。
RMI是和远程服务交流的一个优秀方法,但它也有限制。首先,RMI通过防火墙工作时就有困难,那是因为RMI使用任意端口来交流—这是防火墙规则所不允许的。另外一件要考虑的事情是RMI是基于Java的。这就意味着客户端和服务器端都必须是运用Java所写的程序。
综上所述,远程方法调用是不适用于本案例的。

2.2 使用Hessian和Burlap的远程调用方案
Hessian和Burlap是基于HTTP的轻量级的远程服务。它们都致力于通过把它们的API和它们的通信协议变得尽可能的简单,来简化WEB服务。
Hessian使用二进制消息来建立客户端和服务端之间的交流。但与其他二进制远处技术(如RMI)不同的是,它的二进制消息可以移植到其他非Java语言中。
Burlap是一种基于XML的远程技术,这使得它自然而然的可以移植到其他任何可以解析XML的语言中。
Hessian和Burlap都解决了RMI头痛的防火墙问题。并且它们都是非常轻量级的,足以在内存或空间受限制的环境下使用,例如Apple和无线设备。但当序列化RPC消息发来的对象时,Hessian和Burlap都采用了自己私有的序列化机制,而RMI使用的是Java本身的序列化机制。如果你的数据模型非常复杂,Hessian/Burlap的序列化模型可能就不够了。
可见,此种解决方案也不是本案例的最佳选择。

2.3 使用HTTP invoker
HTTP invoker是一个新的远程调用模型,作为Spring框架的一部分,来执行基于HTTP的远程调用(让防火墙高兴的事),并使用Java的序列化机制。(让程序员高兴的事)但是,HTTP invoker有个重大的限制,它是一个只在Spring框架中提供的远程调用解决方案。这就意味着服务器端和客户端都必须是使用Spring的运用。并且,至少就目前而言,也暗示了客户端和服务器端都必须是基于Java的。
可见,这种解决方案是根本不适合本案例异构系统集成的。

2.4 使用JAX-RPC的WEB Service
JAX-RPC是“基于XML的远程调用的Java API”的缩写。这是一个口语化的词,仅仅意味着JAX-RPC是Java程序使用XML远程访问服务的一种方式。特别地,这个服务是指用SOAP协议公开他们的功能的Web Service.由于Web Service采用了SOAP协议,因此它是跨平台的而且避免了防火墙带来的诸多问题。
因此,Web Service 是符合本案例实现异构系统集成的最佳解决方案。

3、结束语
Web服务是一个崭新的分布式计算模型,它是一系列标准的集合,这些标准包括:XML、SOAP、UDDI、WSDL等,这些标准中许多都还不很成熟,还处于发展中。Web服务利用这些标准提供了一个松耦合的分布式计算环境;在Web服务的模型中,我们可以将其封装成一个个相对独立的Web服务,每个服务提供某类功能,客户便可以通过绑定的HTTP的SOAP来访问这些服务。提供了以往任何一种技术都不可能提供的异构系统之间的良好的互操作性。