[发明专利]一种分布式FORTRAN模块间的通信方法无效
申请号: | 201010119458.0 | 申请日: | 2010-03-05 |
公开(公告)号: | CN101788923A | 公开(公告)日: | 2010-07-28 |
发明(设计)人: | 汪小林;罗英伟;邓浩;王海波 | 申请(专利权)人: | 北京大学 |
主分类号: | G06F9/46 | 分类号: | G06F9/46;G06F9/54 |
代理公司: | 北京君尚知识产权代理事务所(普通合伙) 11200 | 代理人: | 冯艺东 |
地址: | 100871 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 分布式 fortran 模块 通信 方法 | ||
技术领域
本发明涉及一种分布式FORTRAN模块间的通信方法,属于计算机软件技术领域。
背景技术
FORTRAN语言诞生于20世纪50年代,由于其语法结构简单、科学计算功能强大特别是在复数运算上独一无二的优势,被广泛应用于数学与工程计算领域。很多早期的工程应用计算程序、软件都是用FORTRAN语言编写的。但是FORTRAN程序又有其明显的缺点:用户界面不友好,可视化性很差。
如何继续使用大量的FORTRAN遗留代码,减少浪费;同时如何使应用程序又具有像C++、VB、Delphi这些语言的友好人机界面呢?一般的策略是利用混合语言编程,对FORTRAN代码用C/C++、VB、Delphi语言封装起来。
这种策略将封装的级别停留在语言级别,在可视化性,易用性方面得到了不错的提高,但是按照这种策略拆分和封装后的FORTRAN遗留程序只能部署在一台机器上,还达不到分布式、跨平台的程度,造成对FORTRAN代码的可重用性实质上并不高。
从上面的分析可知,对于FORTRAN遗留程序中,现有的方法是部署在同一台机器上,所以各个模块之间的通信可通过共享内存变量来实现,但是在分布式的环境中,这种通信机制是不行的。另外对于模块内部的读取文件的问题,文件指针的定位也是分布式环境中必须考虑和解决的。
发明内容
本发明的目的在于提供了一种分布式FORTRAN模块间的通信方法,本发明的方法不仅能够实现现有方法的可视化、可用性的效果,而且针对分布式的环境,提供了创造性的解决方案,实现了将拆分和封装后的模块部署在分布式的机器上执行效果和原来的完全相同。
本发明的技术方案为:
一种分布式FORTRAN模块间的通信方法,其步骤为:
1)将拆分后分布在各主机上的FORTRAN模块依次进行C语言、Java语言封装,生成Web Service模块;所述Web Service模块内包含有一利用FORTRAN语言编写的FORTRAN模块适配器,用于解析传入的全局变量文件和生成输出的全局变量文件;所述全局变量文件包括内部读取文件名、文件指针和全局变量参数;
2)发起请求主机A上FORTRAN模块的适配器生成发往目标主机B的全局变量文件A,并通过主机A的Web Service模块发送给主机B的Web Service模块;
3)主机B上FORTRAN模块的适配器解析主机B的Web Service模块传入的该全局变量文件A,并对相应参数进行赋值;
4)主机B上FORTRAN模块的适配器调用该FORTRAN模块执行运算,并利用该适配器生成全局变量文件B;
5)主机B上FORTRAN模块的适配器通过主机B上的Web Service模块将生成的全局变量文件B发送给主机A的Web Service模块;
6)主机A上FORTRAN模块的适配器解析主机A的Web Service模块传入的该全局变量文件B,并对相应参数进行赋值后传给该FORTRAN模块。
进一步的,所述Web Service模块的生成方法为:
1)利用FORTRAN语言编写主机上FORTRAN模块的适配器;
2)利用C语言编写一个封装程序,负责和该适配器通信;
3)利用Java语言编写一个封装程序,负责调用该C语言封装程序;
4)将该Java封装程序封装成一个Web Service模块。
进一步的,所述Java语言封装程序利用Java语言的getRuntime方法获取当前Runtime类运行时对象的引用,然后调用相应的exec方法访问所述C语言封装程序。
进一步的,所述C语言封装程序利用C语言的system函数访问所述Java语言封装程序。
进一步的,如权利要求1所述的方法,其特征在于所述全局变量文件的格式为XML文件格式。
进一步的,所述文件指针为FORTRAN命令语言的行号。
进一步的,所述主机A的Web Service模块将所述全局变量文件A发送给主机B的WebService模块的方法为:
1)所述主机A上FORTRAN模块的适配器将该全局变量文件A传给该Web Service模块的C语言封装程序;
2)该C语言封装程序将该全局变量文件A传给该Web Service模块的Java语言封装程序;
3)该Web Service模块的Java语言封装程序调用主机B的Web Service模块,将全局变量文件A发送给主机B的Web Service模块。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京大学,未经北京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010119458.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:冗余磁盘数组系统的坏块处理方法
- 下一篇:标签打印系统