第35卷第2期 东华理工大学学报(自然科学版) JOURNAL OF EAST CHINA INSTITUTE OF TECHNOLOGY Vol1.35 No.2 2012年06月 Jun.2012 doi:10.3969/j.issn.1674-3504.2012.02.015 跨平台中大量数据传输的接口设计解决方案 高永平, 李祥 (东华理工大学软件学院,江西南昌330013) 摘要:气象业务的信息平台建设中,不同平台之间存在大量的数据交换与访问,通过设计一个带五个参数的接口函数, 包括输入字符数组、输入字符数组长度、输出字符数组、输出字符数组长度、标志位五个参数用于实现不同平台中信息的 传递,实现跨平台的数据传递与访问,同时对于存在的并发问题提出了相应的解决方案,为在不同平台下的接口函数编 写、调用等过程提供了一个完整的实现参考样本,并在实际项目中成功应用。为今后类似问题的解决提供了一种成功的 方案。 关键词:跨平台;接口函数;并发;冲突;实现方案;JNA;气象学 中图分类号:TP311.5 文献标识码:A 文章编号:1674-3504(2012)02-0185-04 高永平,李祥.2012.跨平台中大量数据传输的接口设计解决方案[J].东华理工大学学报:自然科学版,35(2):185.188. Gao Yong—ping,Li Xiang.2012.Interface design of great data transmission throeIgh a cross—platform[J].Journal of East China Insti— tute ofTechnology(Natural Science Edition),35(2):185—188. 目前气候部门各业务主要是基于Fortran语言 据、输出数据与信息技术平台进行合理的衔接,根 开发了各类业务子系统,而选择Fortran作为业务 据气象各类业务特点,其处理的数据主要以文件的 开发的理由是:Fortran是第一个能将数学公式转换 方式提供,接口设计的成败直接决定信息技术平台 成计算机程序的语言。1957年IBM成功地将其商 建设的成败。 业化后,Fortran正式展开协助无数工程应用软件的 开发工作。Fortran是工程界最常用的编程语言,其 1 接口函数的提出与设计 在科学计算中(如航空航天、地质勘探、天气预报和 为了实现信息技术平台与气象各相关业务之 建筑工程等领域)发挥着极其重要的作用(胡利军 间进行合理的数据交换,经过充分调研和分析后提 等,2008)。 出采用接口函数的方式来实现系统之间的接口。 采用J2EE作为主要语言开发的支撑气候业务 信息技术平台通过接口函数传递接口数据,气象各 的信息技术平台(以下简称信息技术平台)(李亚 相关业务接收函数传递的输人数据,调用相关的业 东等,2000),需要为气候监测、预测分析、灾害性气 务算法进行处理,处理后生成相关的结果文件供信 候预警等相关业务系统提供数据支撑,从国家级气 息技术平台使用。具体过程如图1所示。 象资料存储检索系统库、气象数值预报库和灾情直 1.1接口函数的具体形式 报库、国站等数据源处获取数据,为气象信息 中心产品库、气候中心网站等提供产品,因此与气 根据信息技术平台接口功能的要求,提出接口 候中心各业务系统、气象专业数据库、国站、公 函数采用五个参数形式来实现,具体如下: INTEGER FUNCTION interface_共服务网站等系统都有接口(夏守姬等,2010)。如 fun(srcPath,sr. 何设计合理的接口,将气象各类业务处理的输人数 cLen,descPath,descLen,flag) INTEGER,VALUE::srcLen,descLen character,dimension(srcLen)::?srcPath 收稿日期:2011-08-04责任编辑:张国庆 character,dimension(descLen)::descPath 基金项目:东华理工大学校长基金(DHXK0804) integer::flag 作者简介:高永平(1974一),男,硕士,副教授,主要从事软件工程与数据 库技术的研究。E—mail:gaoyp@ecit.cn END FUNCTION 其中接口参数为: 东华理工大学学报(自然科学版) 接口数据(输入) 接口数据(输出) 参数文件 《l 黪魏麓00 女 l结果文件l| l ∞ | g| a ” 螃静 t | ‘. .数据文件l l 一\/,气象各相关业务算 \ \ I结果文件2 l 触目 #m g| |∞《 溉||滞 嘉 一 意t一赫 ,l } …… / I 劫 …. 1. g |l 碧晖 / l 图1 1言息技术平台接口功能图 l I结g 瓤果%镪l文☆ 螺件强 l姆“鼍 /路径/结果文件n Fig.1 Interface function of informational technology platforms srcPath为输入字符数组;srcLen为srcPath字 符数组的长度,类型为integer;descPath输出字符数 组;descLen为输出字符数组长度,类型为integer; flag为备用参数,类型为integer;接口返回参数类型 刀m ger。 1.4接口函数中数据并发访问冲突的解决 在输出的结果文件中,不同用户生成的结果文 件采用相同的文本名,这样容易发生数据的覆盖问 1.2利用接口函数实现大量数据的输入 题同时也容易发生文件的读操作与写操作的冲突 问题即数据访问的并发问题。为了解决这个问 ,,接口函数的第一个参数、第二个参数解决输人 文件的问题,具体如下: 第一个参数传递的是一个含路径的文件名, 如:/路径/in.txt;第二个参数为第一个参数的长 度。 题,采取的方法是:接口函数中的第三个参数的文 件名采用一定的命名规则,不同的用户获取不同的 文件名,同时在第三个参数对应文件中也采用类似 的方法输出不同结果的文件名。例如:用户zhang. san,接口函数的第三个参数为:/路径/zhangsan. 在第一个参数文件/路径/in.txt中的内容组织如下: /路径/参数文件1.txt /路径/数据文件1 /路径/数据文件n 1.3 利用接口函数实现大量数据的输出 txt,其中/路径/zhangsan.txt文件中的内容组织形 式为: /路径/zhangsan2010.1.1—10—50-60,1.grd /路径/zhangsan2010…1 1 10-50-60-2.grd /路径/zhangsan2010…1 I 10—50-60一n.grd 接口函数的第三、第四个参数为解决大量输出 2在气象相关业务算法中接口函数的设计 接口函数定义按照FORTRAN2003的ISO—C— 数据的文件,具体如下: 第三个参数传递的是一个含路径的文件名, 如:/路径/out.txt;第四个参数为第三个参数的长 度。 BANGDING特性编写,Fortran子过程的接口参数 中,应将字符串声明为单个字符的数组,与c保持 兼容,并传递字符数组长度。 integer function interface—在第三个参数文件/路径/out.txt中的内容组 织如下: fun(srcpath,srclen, descpath,desclen,flag)bind(c,name= interface— function') use iso——/路径/结果文件1 /路径/结果文件2 C——binding implicit none 第2期 高永平等:跨平台中大量数据传输的接口设计解决方案 integer,value,intent(in)::srclen,desclen character(1en=1),dimension(srclen),intent (in)::srcpath character(1en=1),dimension(desclen),intent (in)::descpath integer,intent(in)::flag character(1en=srclen)::inputifle!传递的输 入参数 character(1en=desclen)::outputifle!传递的 输出参数 integer::i,J output=一1 inputfile=”” do i=1,srclen inputifle=trim(inputfile)//srcpath(i) enddo outputifle=”” do i=1,desclen outputifle=tirm(outputifle)//descpath(i) enddo call……!调用气象相关业务算法程序 interface_fun=1 1成功被调用返回值 end function 3信息技术平台中跨平台接口调用的实现 接口函数的调用方式采用动态链接库形式调 用;在Linux平台下动态链接库文件格式为.SO格 式,windows平台下为.du格式;JNA是建立在JNI 技术基础之上的一个Java类库,可以方便地使用 Java直接访问动态链接库中的函数。JNA中,它提 供了一个动态的C语言编写的转发器,可以自动实 现Java和C的数据类型映射。信息技术平台中使 用JNA类库来实现接口函数的调用(王崇霞等, 2006)。 3.1 定义一个接口,实现对接口函数的访问 使用Java语言定义一个接口,实现对接口函数 的调用。 package con.algorith; impo ̄com.sun.jHa.Native; //接口名为SeaWeather public interface SeaWeather extends com.sun. jna.Library{ //加载算法实例 SeaWeather lib=(SeaWeather)Native.1oadLi— brary(”/home/user/seaW/seaw.SO”,SeaWeather. class); //seaw.so为linux平台下动态链接库文件 int interface—function(String input,int inutLen, Stirng output,int outputLen,int flag);//接口函数 } 3.2定义一个类测试接口函数 定义一个类测试接口函数是否调用成功。 impo ̄COB.algorith.SeaWeather; public class TestSeaWeather{ public static void main(Stirng[]args){ int result=SeaWeather.1ib.interface—function (”/home/user/seaW/in.txt”,”/home/user/seaW/ in.txt”.1ength(),”/home/user/seaW/zhangsan. txt”,”/home/user/seaW/zhangsan.txt”.1ength(), 0); System.out.prinfln(result); } } 4结束语 本文从信息技术平台与气象相关业务接口的 实际问题出发,从接口函数的设计、气象业务算法 中函数的具体实现、Java中函数的调用等方面提出 了一种解决大量数据传输在跨平台中的解决方案, 并在气候中心的集成项目开发中成功应用,为类似 问题的解决提供了一种参考模式(陈芬等,2009)。 参考文献 胡利军,冯小虎.2008.多种连接方式在自动站数据传输中的应用 [J].气象,34(7):l14.117. 李亚东,夏雨佳,席裕庚.2000.基于JNI的跨平台软件设计[J】.计 算机工程,26(9):87-88. 夏守姬,李宁,李伟忠等.2010.Java测井平台上多语言应用集成框 架设计[J].石油学报,31(5):810.8l4. 王崇霞,王新龙.2006.Java语言与c语言的接口分析[J].长治学院 学报,23(2):29-30. 陈芬,陈文惠.2009.基于GIS的福建省地形分析[J].东华理工大学 学报:自然科学版,32(2):185.188. 东华理工大学学报(自然科学版) 2012钲 Interface Design of Great Data Transmission through a Cross—platform GAO Yong—ping,LI Xiang (Department of Software,East China Institute of Technology,Nanchang,JX 33001 3,China) Abstract:The informational platform construction of meteorological operations need lots of data to exchange and access in the different platforms.In this study,we design an interface function with five parameters to achieve transfer and access of cross-platform data.They are input character array,length of input character array,output character array,length of output character array and flag.In addition,some methods are proposed to address the concurrency issues.A complete implementation of reference sample is provided to transfer the interface function in the different platforms. Key Words:cross—platform;interface functions;concurrency;conflict;implementations;JNA;meteorology 我校孙占学教授团队研究成果获省科技奖 我校孙占学教授团队研究成果“地下水淡化少试剂地浸采铀研究”荣获江西省科技进步二等奖。 孙占学教授研究团队是一支老中青三结合的科技创新团队,具备攻克世界铀矿采冶领域科研难题的 实力。该团队是由1950年代留苏的著名老专家李学礼、史维浚教授,1980年代后学成的博士刘金辉、胡宝 群、李江、刘亚洁等年轻专家组成,是国家国防科工局科技创新团队。近年来,在国家自然科学基金项目和 核能开发项目资助下,该团队通过三年多大量的室内外试验、模拟计算、综合分析研究等,创造性地开发出 了淡化少试剂地浸采铀新工艺。该项研究成果被中核天山铀业公司等单位应用于生产,提高了浸出 液铀浓度,缩短了浸出周期,创造了显著的经济与社会效益。为解决矿床地浸开采难题提供了一条切实可 行的解决途径。权威专家鉴定认为,该研究成果完善和发展了现代地浸采铀理论与技术,具有很高的学术 水平与应用价值,成果总体上达到了国际先进水平,其中淡化少试剂地浸采铀工艺属国内外首创,达到了 国际领先水平。 (摘自东华理工大学网,2012.6.25,江光亮)