论文部分内容阅读
[摘 要]解释直连,即勘探决策支持系统等应用软件通过GFDK实现对GeoFrame/OpenWorks解释项目库的直接访问。使用户能够方便快捷地对解释成果库中的地震数据、解释成果数据和成果图件数据进行提取和展示。改变以前先由人工从解释项目库导出数据再通过离线方式加载到勘探决策支持系统造成的费时费力问题。大大提高了综合研究成果的展示效率,进一步促进了勘探井位部署工作效率的提高。
[关键词]解释直连;解释项目库;GFDK;
中图分类号:TG333.7 文献标识码:A 文章编号:1009-914X(2015)36-0197-01
1 引言
在胜利油田勘探决策支持系统中,工区信息、地震数据体、层位、断层解释成果以及时深关系、合成记录等井数据来源于解释项目库,目前的数据加载需要先导出解释工作站上的各类研究成果和地震数据体,再通过人工方式加载到决策系统中,这样的加载流程给研究人员带来了较大的工作量,既影响工作效率又容易产生错误数据。
2 系统架构设计
为了使GeoFrame这一主流解释软件形成的各种解释成果数据以及地震数据,通过项目库管理平台加载到数据库中,应用于勘探决策支持系统,经过油田专家确认,在GFDK、ITK以及 OpenSprit这三种方案择优选择GFDK连接方式作为胜利油田GeoFrame数据直连的最佳方案。如图1所示:
3 实现技术路线
3.1 Socket通讯
服务器端程序与客户端程序使用TCP/IP协议进行通讯。由客户端向服务器端发送请求,服务器端收到请求后进行一系列逻辑处理,并将结果数据打包返回给客户端。通过使用Socket技术,保障了数据传输效率,并提高了数据访问安全性。创建Socket套接字后:
在客户端,通过Connect()方法连接到指定的服务器,并通过Send()/SendTo()發送消息或者Receive()/ReceiveFrom()从服务端接收数据;
在服务器端,使用Bind()方法绑定所指定的接口使Socket与一个本地终结点相联,并通过Listen()方法侦听该接口上的请求,当侦听到用户端的连接时,调用Accept()完成连接的操作,创建新的Socket以处理传入的连接请求。
使用完Socket后,使用Shutdown()方法结束通信,并使用Close()方法关闭Socket。
3.2 线程池与线程锁
线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。线程池可执行的线程数目有一个最大值,超过最大值的线程可以排队,但他们要等到其他线程完成后才启动。一般在处理较小事务,而创建命名线程略显繁琐时,可以使用线程池。
如果代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。若有多个线程同时执行写操作,就可能影响线程安全。保证线程安全的办法就是给共享的线程资源加锁,可以控制同时只有一个线程或一类线程可以访问该资源,从而可以确保资源的状态一致性。
C#使用lock 关键字为给定对象获取互斥锁来确保代码块完成运行,而不会被其他线程中断。
4 系统设计与实现
4.1 GFConnector
GFConnector模块部署在服务器端,它是以GeoFrame IESX Developer’s Kit为基础,设计开发的API工具包的应用方案及系统架构,负责读取GeoFrame数据并通过TCP/IP协议发送数据给客户端的GDPManageStudio。GFConnector包括4个部分,如图2所示
4.2 GDPManageStudio
解释直连客户端部分需要完成以下功能:用户管理,数据传输和数据加载。
用户管理包括客户端登录用户管理和GeoFrame服务访问权限管理。
数据传输和数据加载是成果提取软件的核心部分,也是软件主要的实现目标。客户端以图形化界面方式直观的为用户展示各种数据类型。在实际操作中,客户端好比一个数据中转站,用户通过客户端向服务器发送数据请求,请求通过系统的底层数据传输模块组织发送。服务器接收到请求以后,响应该请求,并将所需数据信息发送给客户端。系统接收服务器端反馈数据的操作,同样由底层数据传输模块完成,然后交由客户端来做进一步的处理。
客户端采用WebService连接到勘探决策支持系统项目库,执行数据库操作。
整个客户端的结构框图如下图3所示:
5 结语
通过解释直连模块的加入,勘探决策支持系统可以很好地提高解释人员加载各类解释成果数据的速度和准确度,提高了工作效率,节省了宝贵的时间,为今后解释人员更好、更快地工作提供了一个很好平台。
参考文献
[1] 中国石化,《石油天然气勘探技术标准汇编(二)》,2004.
[2] 常子恒,《石油勘探开发技术》,北京,石油工业出版社,2001.
[3] Erich Gama,Richard Helm,Ralph Johnson,John Vlissides,《设计模式:可复用面向对象软件的基础》,北京,机械工业出版社,李英军,马晓星等 译,2004.
[4] Mike Cohn,《Scrum敏捷软件开发》,北京,清华大学出版社,廖靖斌,吕梁岳等.译,2010.
[关键词]解释直连;解释项目库;GFDK;
中图分类号:TG333.7 文献标识码:A 文章编号:1009-914X(2015)36-0197-01
1 引言
在胜利油田勘探决策支持系统中,工区信息、地震数据体、层位、断层解释成果以及时深关系、合成记录等井数据来源于解释项目库,目前的数据加载需要先导出解释工作站上的各类研究成果和地震数据体,再通过人工方式加载到决策系统中,这样的加载流程给研究人员带来了较大的工作量,既影响工作效率又容易产生错误数据。
2 系统架构设计
为了使GeoFrame这一主流解释软件形成的各种解释成果数据以及地震数据,通过项目库管理平台加载到数据库中,应用于勘探决策支持系统,经过油田专家确认,在GFDK、ITK以及 OpenSprit这三种方案择优选择GFDK连接方式作为胜利油田GeoFrame数据直连的最佳方案。如图1所示:
3 实现技术路线
3.1 Socket通讯
服务器端程序与客户端程序使用TCP/IP协议进行通讯。由客户端向服务器端发送请求,服务器端收到请求后进行一系列逻辑处理,并将结果数据打包返回给客户端。通过使用Socket技术,保障了数据传输效率,并提高了数据访问安全性。创建Socket套接字后:
在客户端,通过Connect()方法连接到指定的服务器,并通过Send()/SendTo()發送消息或者Receive()/ReceiveFrom()从服务端接收数据;
在服务器端,使用Bind()方法绑定所指定的接口使Socket与一个本地终结点相联,并通过Listen()方法侦听该接口上的请求,当侦听到用户端的连接时,调用Accept()完成连接的操作,创建新的Socket以处理传入的连接请求。
使用完Socket后,使用Shutdown()方法结束通信,并使用Close()方法关闭Socket。
3.2 线程池与线程锁
线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。线程池可执行的线程数目有一个最大值,超过最大值的线程可以排队,但他们要等到其他线程完成后才启动。一般在处理较小事务,而创建命名线程略显繁琐时,可以使用线程池。
如果代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。若有多个线程同时执行写操作,就可能影响线程安全。保证线程安全的办法就是给共享的线程资源加锁,可以控制同时只有一个线程或一类线程可以访问该资源,从而可以确保资源的状态一致性。
C#使用lock 关键字为给定对象获取互斥锁来确保代码块完成运行,而不会被其他线程中断。
4 系统设计与实现
4.1 GFConnector
GFConnector模块部署在服务器端,它是以GeoFrame IESX Developer’s Kit为基础,设计开发的API工具包的应用方案及系统架构,负责读取GeoFrame数据并通过TCP/IP协议发送数据给客户端的GDPManageStudio。GFConnector包括4个部分,如图2所示
4.2 GDPManageStudio
解释直连客户端部分需要完成以下功能:用户管理,数据传输和数据加载。
用户管理包括客户端登录用户管理和GeoFrame服务访问权限管理。
数据传输和数据加载是成果提取软件的核心部分,也是软件主要的实现目标。客户端以图形化界面方式直观的为用户展示各种数据类型。在实际操作中,客户端好比一个数据中转站,用户通过客户端向服务器发送数据请求,请求通过系统的底层数据传输模块组织发送。服务器接收到请求以后,响应该请求,并将所需数据信息发送给客户端。系统接收服务器端反馈数据的操作,同样由底层数据传输模块完成,然后交由客户端来做进一步的处理。
客户端采用WebService连接到勘探决策支持系统项目库,执行数据库操作。
整个客户端的结构框图如下图3所示:
5 结语
通过解释直连模块的加入,勘探决策支持系统可以很好地提高解释人员加载各类解释成果数据的速度和准确度,提高了工作效率,节省了宝贵的时间,为今后解释人员更好、更快地工作提供了一个很好平台。
参考文献
[1] 中国石化,《石油天然气勘探技术标准汇编(二)》,2004.
[2] 常子恒,《石油勘探开发技术》,北京,石油工业出版社,2001.
[3] Erich Gama,Richard Helm,Ralph Johnson,John Vlissides,《设计模式:可复用面向对象软件的基础》,北京,机械工业出版社,李英军,马晓星等 译,2004.
[4] Mike Cohn,《Scrum敏捷软件开发》,北京,清华大学出版社,廖靖斌,吕梁岳等.译,2010.