鮑奇
摘 要 對于勘探企業來說,一體化網絡測井處理和解釋軟件平臺對于企業的重要性不言而喻,而該軟件系統具有開放性,并且采用的是面向對象的思想進行設計,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.