隨著標準和技術、主要行業支持,和最佳實踐 —— 所有這些都將 SOA 定位為一個可以幫助公司增加業務靈活性并在全球市場中領先的模型 —— 的發展,面向服務的體系架構(Service-Oriented Architecture,SOA)的概念更加普及。雖然有許多好處,但是許多公司面臨著利用當前的開發員工(其中許多人可能缺乏完成該任務所需的知識和專業技術)將當前的應用程序快速且節省成本地重新設計為可復用的服務的挑戰。
作為 2006 年 4 月 Rational Edge 中的文章中所介紹的概念的延伸,"Enterprise Generation Language:在當今的現代應用程序中利用現有的 IT 技術和資源",本文概括了 IBM Enterprise Generation Language (EGL) 能夠幫助開發團隊減少與開發和部署基于 SOA 的服務相關的時間、精力,和金錢的一些方法。在本文的最后,您將會找到一個到示范此新技術的 viewlet 的鏈接。
遷移到 SOA
現今的大多數 IT 環境是一些不能用透明的方法互相通信的分離的應用程序和平臺的混合。面向服務的體系架構幫助公司克服這些分離,并通過讓開發團隊將這些應用程序作為能夠與計算平臺無關的可復用服務來設計、裝配、部署,并進行管理,以更好地利用當前和未來的應用程序。
不幸的是,SOA 的實現可能是極其復雜的,開發人員想用來作為 Web 服務的許多關鍵業務應用程序是用傳統語言寫成的,例如 COBOL、RPG,和 PL/I。復雜性的增加是由于當今許多經驗最豐富的開發人員不熟悉 Java/J2EE 和 Web 服務技術。
IBM 的 Enterprise Generation Language (EGL) 是一個高級程序設計語言,它能夠讓使用 COBOL、RPG、PL/I,和其他第四代語言的開發人員在不作為 Java、J2EE,或 Web 服務技術專家的情況下完整地撰寫基于 Java 和 SOA 的功能應用程序。有了 EGL,開發人員將他們的業務邏輯撰寫為 EGL 源代碼,然后 EGL 工具生成 Java 或 COBOL 代碼及需要部署到應用程序上的相應運行時工件。
EGL 隱藏了 Java 平臺和相關的中間件程序設計機制的細節,這意味著具有很少的或不具有 Java 和 Web 技術經驗的開發人員可以使用 EGL 很容易地創建基于 SOA 的應用程序。“EGL 使得對于那些熟悉傳統語言,例如 COBOL 或 RPG 的程序設計人員能夠很簡單地將他們的應用程序做成 Web 服務,”Sanjay Chandru(北卡羅萊納州 Research Triangle Park 的 IBM EGL 生態系統團隊中的軟件工程師)說。“例如,如果程序設計人員擁有一個希望調用的用 COBOL 寫的現有應用程序,那么他們可以用 EGL 很容易地開發代碼,并且讓 EGL 生成調用此應用程序的服務。同樣重要的是,EGL 本身具有傳統程序設計語言的根源,像 COBOL。因此,許多結構將對 COBOL 程序設計人員是非常熟悉的,可以使他們快速學會并且利用 EGL 語法和概念。”
設立程序設計標準
EGL 提供特性完備的業務語言,抽象出了目標技術的細節。它還通過向各種目標數據源提供一致的規范來簡化程序設計模型。
“EGL 提供去掉了了解用于訪問底層代碼的所有應用程序程序設計接口(API)復雜性的高層次抽象”,Chandru 說。“例如,在過去,想要執行數據訪問功能,例如訪問消息隊列里的消息或 SQL 表中的數據,的程序設計人員,不得不去了解所需要的特殊語言的,將要用于訪問消息隊列或數據庫的所有 API。有了 EGL,我們已經將用于訪問消息的各種語句標準化了。因此,不論您想要檢索消息隊列中的消息,還是檢索 SQL 表中的一行數據,您所需要知道的全部內容是 I/O 動詞的標準集,例如‘get、add,或delete’,這些是 EGL 中用于訪問這些 I/O 類型的。這樣,開發人員可以專注于業務邏輯,而不是進行數據訪問所需的底層 API。”
簡化開發過程
EGL 中所撰寫的代碼是跨多應用程序和平臺可伸縮和可復用的。用 EGL 編寫的服務可以從內部或外部調用,并且 EGL 開發的 Web 服務可以在 .NET 領域和 Java 領域內進行訪問。
EGL 還簡化了開發過程,它提供了易于使用的向導、結構(construct)—— 例如包含 EGL 代碼的庫 —— 頁面處理器、報告處理器,和將創建和消費 SOA 環境中的許多服務所需要的所有步驟自動化的代碼構造。
例如,希望在 EGL/JSP(Java Server Pages)中調用 Web 服務的開發人員使用一個簡化的過程,該過程需要菜單驅動地創建針對 EGL 服務的 Service Binding Library、一個表示要訪問的方法簽名的接口,和表示包含信息的數據結構的記錄工件。強大的拖拽功能用于創建 EGL/JSP 頁,并且用于定制該頁中的字段和控件。該拖拽功能還用于將調用 Web 服務的 EGL 方法綁定到頁面中的 Submit 按鈕上。通過 IBM Rational 工具集所提供的 IBM Websphere Application Server 可以快速地測試并調試完成了的頁面。
此功能不僅幫助減少開發時間,而且還能夠使沒學過 Java 和 Web 服務技術的開發人員很容易地完成手邊的任務。“當您將用 Java 或 .NET 所寫的服務加入一個 EGL 工程中時,您可以簡單地單擊右鍵,并在菜單中選擇 'Create an EGL Service Binding Library'”。Chandru 解釋說。“EGL 理解導入的 WSDL(Web Services Description Language)文件中的方法簽名和數據結構簽名,并且創建了用于訪問服務的所有相應的 EGL 工件。所以您不需要了解 WSDL 并且不用從頭開始創建所有這些數據結構。EGL 通過為您做所有這些事情來減小復雜性。”
確保編碼質量
EGL 還有一個內嵌的解釋調試器,它能夠讓用抽象語言層撰寫代碼的開發人員執行源代碼層的調試。調試器讓開發人員在應用程序部署之前使用真實數據單步調試抽象程序代碼。這意味著實際的代碼生成可以推遲到開發人員對測試結果滿意時。
另外,開發人員可以簡單地通過 IBM Rational Application Developer 或 IBM Rational Software Architect 產品中的 Web services Explorer 功能來測試他們的 Web 服務?;蛘呷绻麄冊敢?,可以使用 EGL 中的拖拽功能將 Web 服務放到 JSP 頁面中,并通過一個頁面進行訪問。
結束語
SOA 的好處是很明顯的:它們令企業將它們的應用程序都作為服務,這提高了投資收益。從開發的觀點,SOA 復用了現有的 IT 資產,這減少了開發成本并提高了生產率。因此有了 EGL,公司和它們的開發團隊可以通過快速并簡單地集成并在企業內擴展業務應用程序的方式利用 SOA 的功能。
EGL 技術緊密地集成到包含 IBM Rational Application Developer、IBM Rational Software Architect、IBM WebSphere Developer for zSeries,和 IBM WebSphere Development Studio Client for iSeries® 產品所提供的一組設計和構造工具集上。當結合了 EGL 技術,這些工具就簡化了創建、測試、部署,及維護使用 Java、J2EE、Web 服務、SOA,和門戶技術的業務應用程序的過程。