Java测井平台上多语言应用集成框架设计
2014-04-29鲍奇
鲍奇
摘 要 对于勘探企业来说,一体化网络测井处理和解释软件平台对于企业的重要性不言而喻,而该软件系统具有开放性,并且采用的是面向对象的思想进行设计,Java作为一款可以跨平台的面向对象编程语言,能够很好的满足大型测井综合应用软件的开发,能够实现勘探和生产一体化、单井和多井处理一体化、本地和远程访问一体化运行。为了能够更加方便、快速、可靠的将不同语言开发的应用程序集成到测井综合应用一体化软件中,可以在模块分层的基础上采用Socket与JNI技术设计出多语言的集成框架,从而能够更加快速的解决上述问题,并能够减少開发量和开发成本,提高平台的适应性和扩展性。
关键词 测井平台 多语言应用 框架设计 Java
中图分类号:TP3 文献标识码:A
0前言
目前国内外的测井处理解释软件产品很多,运用的较为广泛的有CifSun系列软件、阿特拉斯的Express、帕拉代姆的Geolog等,这些软件产品在实际运用中都取得了良好的效果,但是由于开发的时间较早,并受到条件的限制,还不具备真正意义上的跨平台、跨操作的运行能力。而实际运用中,为了更好的满足实际的需求,需要在测井平台中安装多语言应用的程序,这就对测井平台提出了更高的要求。鉴于此,以下本文主要分析了采用Java设计一种多语言应用集成框架,以解决这类问题。
1多语言应用集成框架的设计
采用Java设计一种多语言应用集成框架可以实现一体化平台的扩展性和适应性功能,整体采用分层式体系结构,从上到下分为三层,分别是应用层、支持层和数据层。应用层包括处理解释和资料管理,该层直接面对客户,为客户提供人机交互界面;支持层包括平台框架、数据访问接口、可视化扩展接口、缓存管理和模块挂接接口,该层是应用层和数据层之间沟通的桥梁,可为应用层提高可扩展的服务,也可为屏蔽数据层中复杂的内部操作和数据来源;数据层包含了文件系统和测井数据库,该层主要负责数据的处理。每层之间保持松散耦合,以保证平台的可复用性与扩展性。支持层起着承上启下的作用,可为应用层和数据层提供各类接口和缓存机制,可以使各应用程序采取统一的方式访问本地以及网络数据。
根据以往测井平台的实际经验,一体化平台吸取了Cif数据格式的优点,并在广义测井曲线理论基础上,对链接进行了创新和完善,形成新的Cifplus格式。为了实现多语言应用程序集成到平台中,首要解决的问题是通信问题,目前主要有两种解决方案:一是利用Java重新改写处理方法,二是基于模块设计思路,建立起数据沟通的支持层。本文就采用了第二种解决方案,该方案设计的集成框架结构的扩展性好,开发成本低。应用程序和平台间数据沟通主要包含两个方面的内容:一是数据调用,主要的作用是实现数据的输入和输出;二是同步通信,主要的作用是数据的分发和更新。数据调用实现分别分为Java数据访问接口层、JNI支持层和数据读写库层,而同步通信采用Socket通信方式,当客户端和服务器链接时,客户端向服务器发送数据更新的信息,服务器接收到信息后将数据分发给应用层的相关模块,相关模块响应并处理,从而实现一体化平台数据层中数据同步性。
2多语言应用程序方案设计
2.1数据通信方式设计
(1)基于网络的通信方式
网络通信的传输协议主要以I/O数据流通作为交流方式,一组数据从一台计算机通过该协议传输到另外一台计算机之上。这种网络的通信原理,其主要实现了远程调用,不断请求将数据转换成流,通过某个传输协议传达到服务端,然后服务端再对收到的请求进行处理,处理完成之后将其转变为流,然后通过传输协议返回到服务端。为了方便该过程的实现,在此基础上对传输协议进行了升级和研究,目前出现了ICE协议和XML-RPC协议。通常所用的远程通信协议其能够提供一个更加便捷以及符合要求的标准传输数据格式,通过这种数据格式的限制可以有效达到传输保密性,使得用户在数据交换传输的时候不能够直接使用底层流进行操作,而需要远程调用。
(2)基于内存拷贝方式
由于JavaSoft公司提出JNI作为java技术的本地编程接口,并将JDK作为编程的一部分。JNI允许了在虚拟机内部运行Java代码,这样使得与其他的语言和数据库的数据完成相互调用。Java作为与本地语言进行沟通的一架桥梁,其JNI实现了Java代码与其他语言之间的交换。从sun站点对JNI的结构进行描述来看,JNI属于JDK的一部分,且程序员在进行编程的时候,只需要编写一种版本与本地应用程序和库,就能够实现所支持的JNI的虚拟机协同工作。
2.2数据调用设计
由于在不同语言之间实现数据通信,其在性能上存在着巨大的差异,其中JNI方式的处理数据效率最高。从事实上看,用户对程序之间的处理速度要求通常比较高,一些复杂的处理解释方法可能实现大量的数据读写,在此过程中其通信效率的高低直接会影响数据的传输,对平台的性能产生直接的影响。因此JNI技术在数据通信传输效率上存在着如此优势,这就使得其成为了最适合、最有效的解决方法。JNI技术层,由于不同的语言编写应用程序,但是其仍然具有相同的数据访问模式,应用程序在访问Java数据接口的时候,需创建Java数据读写类,然后再将Java类分包,形成Jar包,然后再有其他语言编写应用程序,实现数据读写转化。
2.3数据一体化
数据同步始终对于平台数据写入和监控自动更新是一项重要工作,因为当数据被应用程序修改之后,平台的所有模块都可以得到相应的数据更新,并且向其他的模块发出相应的响应处理信息,以确保数据的统一和一致性。此类机制的网络通信,由于C/S架构,使得客户向服务器发送相应的请求,服务器接收并且发出相应的服务指令,然后启动服务。由于同步消息的类型多,信息量丰富,为了提高同步通信的传输效率,采用对象序列化的方式进行通信,这样不仅节省了传输时间,而且还提升了系统的运行效率。
3应用实例分析
以A公司采用Fortran语言编程写成的P型核磁测井处理解释方法以及集成作为本次案例。因为集成各种的处理解释方法,一体化平台提供了相应强大的应用生成器和应用集成器模块,虽然平台已经集成了多种成熟且先进的处理解释评价法,但是其使用仍然存在着一些问题。因此需要按照相应的挂接程序步骤执行,首先依赖平台提供的C语言编写的数据读写lib库,不需要改动相应的应用程序,并且需重新翻译为可执行文件。其次,通过平台设计的应用模块来配置处理方法,在此过程中需从初始化环境开始,然后再输入曲线、输出曲线、绘图参数和处理参数等。接着,通过应用集成器模块,用户可以实现自我配置,将完成参数的配置修改,电机运行时则可以实现程序的自动化处理。最后,应用程序处理结束之后绘图区域需要进行自动刷新,这样解释人员可以根据绘图结果完成对参数值的调整,使得整个处理效果达到最佳。
通过本次的A公司的案例介绍,从采用Fortran语言编程写成的P型核磁测井处理解释方法以及集成进行研究得出通过平台提供的丰富的数据读写接口和完整的可视化应用集成环境,已有的测井处理解释方法不需要任何改动就可以方便、快速地集成到平台中,同时JNI和Socket技术的良好特性也保证了应用程序的处理效率和平台数据的一致性。
4結束语
测井平台由于业务的扩展和更新,需要在平台集成多语言的软件程序,利用Java开发的多语言应用集成框架,能够很好的满足这一需求,通过JNI与Socket技术能够有效的解决应用程序和平台间的通信问题,使各应用程序发挥出它们的作用,以扩展和加强测井平台的实际功能,并且利用JNI与Socket能够极大的减少开发量和开发成本,平台的可扩展性好,适应能力强,其优势明显,应用前景较为广泛。
参考文献
[1] 刘英明,李宁,夏守姬等.Java测井平台高效数据操作缓存设计与实现[J].石油勘探与开发,2011,38(3):328-331.
[2] 尹清铎,李振玉,周建红等.快速测井平台系统在南襄盆地测井效果分析[J].测井技术,2012,29(3):250-252.
[3] 夏守姬,李宁,李伟忠等.Java测井平台上多语言应用集成框架设计[J].石油学报,2010,31(5):810-814.
[4] 张福明,王金茂.基于Forward平台底层WellBase的应用程序开发[J].计算机时代,2013,(4):15-17.
[5] LEAD测井综合应用平台开发与应用[J].测井技术,2011,29(5):396-398.
[6] 张美玲,崔杰,陈国华等.测井数值模拟软件平台开发[J].大庆石油学院学报,2011,32(6):21-23,32.