軟件測試中間件SOA的實施橋接.NET與Java程序 SOA構架
關鍵字:SOA NET與Java程序
Swordfish(箭魚項目)可以說是德國郵政(Deutsche Post)幾年前進行大規模IT基礎設施現代化改造項目的副產品。這一基于德國郵政技術的架構采用了三個熱門技術形成SOA運行時間平臺:服務組件體系架構(SCA)、Java企業整合(JBI)和開放服務網關倡議(OSGi)。公司技術系統架構(TeSA)部門的集成專家Steven Engelhardt說,公司采用了一套適當的部署項目并重用業務服務,進而完成對基礎設施的改造,最終獲得一個包含SOA平臺所需的各種組成部分的SOA框架。
此前,為統一其各業務部門和子公司的企業平臺標準,德國郵政采用了基于Java的企業應用集成(EAI)方案。但正如Engelhardt所說,沒有任何IT環境是勻質的(homogeneous)。他說,“當時,我們向SOA轉型過程中使用的系統集成平臺主要是基于Java的。直到2005年末,我們還只有一個.NET應用程序,這是一個關鍵的用于SOA集成的客戶關系管理程序?!?/P>
公司要求Engelhardt在無需重新部署ESB的情況下將此應用程序集成到基于Java的基礎設施中。Engelhardt說,這個由Glinz Covis公司開發的大型CRM系統是德國郵政進行銷售和市場操作的關鍵。它必須能夠從公司的其它系統中獲取數據,比如客戶聯系信息庫和中央客戶數據庫,“這個CRM系統必須能夠與IT環境下的許多系統進行通信?!?/P>
然后,便是與Codemesh公司的合作。Codemesh公司是一家大規模過程集成技術供應商。該公司開發了用于Java和.NET程序、Java與C++程序、以及JMS與C++和.NET程序之間互相集成的產品。德國郵政此前就曾使用其JunC++ion方案將一個用C++編寫的客戶投訴管理系統集成到服務主干網中。
連接.NET與Java的橋梁
對于這次從.NET向Java的集成,德國郵政采用了Codemesh的新產品:JuggerNET。
Codemesh總裁Alex Krapf說,“當.NET首次出現時,我們還懷疑過它是否有能力繼續發展。但我們很快就改變了主意,決定開發.NET版本的JunC++ion?!?/P>
JuggerNET就是為.NET開發人員準備的開發工具,就像為C++開發人員準備的JunC++ion一樣:它可以為任意Java類生成.NET綁定(binding),可以用來發布.NET版本的Java API,并為Java API生成COM綁定,以及將.NET客戶端集成到JMS或EJB程序中。
JuggerNET附帶一個代碼生成程序,可以將輸入的Java字節碼轉為能在各平臺和編譯器上移植的C#源文件、批處理編譯文件和項目文件。軟件包中還包含兩種運行時程序庫:強名稱類(strongly named)和非強名稱類。它們構成了Java和.NET集成的抽象層。JuggerNET運行時程序庫在CLR過程中使用P/Invoke和JNI執行原始的Java程序。運行時程序庫已作為完美的集成方案中的一部分加入到軟件包中。
JuggerNET中還包含一個可選的共享JVM服務器,無需Java運行環境(JRE)便可在部署在運行.NET代碼的主機上。
JuggerNET可以從Java代碼中生成.NET的橋接組件,這將減少甚至完全消除對編寫集成代碼的需求。它為Java類提供了質量高、可讀性強的.NET代理服務器,可以用編碼器可以處理集成代碼。
從概念到實施
2005年末,Engelhardt團隊以一個簡單的觀點驗證程序開始了他們的集成項目。Engelhardt說,“那時我的任務就是搞清楚集成的原理,以及集成完全發揮效應需要多少時間。以前的我完全生活在Java的世界中,所以根本沒有任何.NET方面的經驗。但我們只用了兩三周的時間就完成了(PoF),這讓我很吃驚?!?/P>
從2006年初開始,德國郵政TeSA部門已經開始應用集成進入產品開發階段。Engelhardt解釋道,“我們當時已經使用JuggerNET為一個接口部署了集成初期的幾個部分。在剩下的一年時間里就是簡單地插入越來越多的接口和相應的IT系統?!?/P>
能夠生成將Java集成到.NET開發環境所需的類是JuggerNET最受Engelhardt喜歡的地方之一。他說,“它為你提供了GUI工具。你只要插入.NET核心所需的Java類,它就能為你生成任何東西。這樣就可以工作在.NET的環境下,而無需為與Java相關的任何事費心。很直觀,用起來也很簡單?!?/P>