使用 SOA 技術實現既有資產的開發和重組(上)

CloudSpace發表於2008-08-22

在本文中,作者使用中間會合 (meet-in-the-middle) 開發模式,對既有資產進行抽取、分析、編排和對映,生成滿足業務目標的可部署程式碼和介面定義檔案,從而實現了對於既有資產的轉換和重組。

概述

既有資產(系統)

既有資產 ( 系統 ) ,是指部署在企業基礎架構中的現有 IT 資產。通常,它與企業正在執行的業務過程結合,對推動企業完成既定的業務目標、實現相關的業務價值,有著重要的意義。怎樣盤活既有資產,重用已有的程式碼,將它們向新的 IT 技術平臺遷移和轉換,提升既有資產的價值,是越來越多的 IT 架構師和技術人員非常重視的問題。對於當前的系統和應用,“代替”和“轉換”都是實現盤活既有資產切實可行的方法,但前提條件是,所提供的既有資產(系統)對於使用者需求來說是高質量、合理的。

圖 1 說明了“代替”和“轉換”對於利用和提升既有資產的影響。在整個應用程式生命週期中,使用“代替”或者“重構”的方式進行應用程式的開發,會大大提高軟體的成本,原有資產的核心價值沒有得到充分的發掘和體現;如果使用“轉換”的開發方式,重用已有的資產,並利用新的技術進行開發和整合,會逐步使企業更靈活和快速的響應業務變化,更好的服務於客戶,從而提升既有資產的價值。


圖 1. “代替”和“轉換”對既有資產影響的比較

基於 SOA 的既有資產開發

SOA 理念及其技術的出現,為轉換企業的既有資產提供了方法實踐。我們可以依託 IBM 所提供的軟體產品,利用 SOA 的方法論,開發和轉換既有資產,並將其遷移到新的環境和平臺中。例如:IBM 提供的 WDz (WebSphere Developer for System z) 軟體,可以對一些既有資產進行組合、編排和轉換,使其能夠滿足業務目標,生成可以執行部署的程式碼以及介面定義檔案。同時,我們也可以使用 WSAA (WebSphere Studio Asset Analyzer) 對企業既有資產進行“統計”,“分析”和“管理”,為進行既有資產的開發提供符合目標要求的輸入。

我們使用基於 SOA 的開發模式,要符合開發的實際情況和企業資產的現有形態。下面提供了三種模式:

(1) 自底向上 (bottom-up) 的開發方法:當使用者期望從已有的應用建立一個新的服務時,應當採取這種開發方法。這時候我們需要生成對 Web Service 的描述以及指定已有資料結構和執行時的 XML 訊息對映。例如對於一個已有的 COBOL 應用,首先選取介面的資料結構,然後生成部署所需要的供應商轉換工件 (artifacts)。

(2) 中間會合 (meet-in-the-middle) 的開發方法:當使用者已經擁有定義好的 WSDL 檔案和已實現的應用或者元件的時候,這時我們需要開發附加的程式碼來實現上述二者之間的對映。例如定義在不同語言如:WSDL, XML, XSD 或 DTD 之間的資料結構對映。

(3) 自頂向下 (top-down):採用這種方式,使用者可以建立一個新的服務滿足已有的 WSDL 定義。通常情況這種服務定義會是工業標準的一部分,可以由不同的服務提供商來實現。這種開發方法需要實現 WSDL 所定義的資料結構和提供對執行時的 XML 訊息處理支援。


圖 2. 基於 SOA 技術的既有資產的開發
 

關於本文

既有資產轉換的目標是維護和提升資產在新的技術環境與平臺中的價值。在實際情況中,轉換實現的方法是多樣化的。例如:轉換可以僅僅涉及到原始碼級別,也可以根據業務需求重用程式碼,併為消費者提供基於 Web 訪問的能力。本文基於第二種情況,選取 COBOL 語言實現的資產作為要轉換的物件,使用 WSDL 描述業務目標,設計和實現了 end to end 的轉換場景。

在本文中,作者使用中間會合 (meet-in-the-middle) 開發模式,對既有資產進行抽取、分析、編排和對映,生成滿足業務目標的可部署程式碼和介面定義檔案。在開發過程中,主要涉及到以下產品和技術:

1.使用 WDz (Websphere Development for Z system),進行資產開發和重組,按照業務目標,編排業務流程,進行介面和訊息的對映,並最終生成可部署程式碼和介面描述檔案。

2.使用中間會合的開發模式,開發和準備輸入的材料,利用 SOA 規約整個場景的設計與實現過程。


用例說明

本文樣例是一個經過裁剪的零部件訂單查詢服務。在一個零售企業中,該服務可以為使用者提供零部件訂單及價格的查詢,主要包含兩部分功能:檢查部件訂單和檢查部件價格。在本樣例中,該服務實現的 COBOL 程式碼是由 CICS 應用提供,為了支援多種零部件的靈活查詢,需要將上述應用轉換為 Web Service。


圖 3. 樣例的 Use case 圖

作者使用 WSDL 描述實現目標和業務需求,對應的 COBOL 程式被作為在 WDz 中建立一個 Service Flow 工程的輸入。下面是關於 WSDL 檔案的定義細節,它完全匹配上述用例檢視表述的需求,並定義了相關的輸入和輸出:


圖 4. WSDL 的定義


Figure xxx. Requires a heading


Figure xxx. Requires a heading

在這個場景中,作者使用 Service Flow 實現既有資產的開發和轉換。在 WDz 中建立一個 Service Flow 工程,將匯入的既有資產的原始檔按照業務目標,使用 flow 的方式進行編排和組合,從而生成可部署的 Web Service。接下來,本文將詳細介紹實現這個場景的開發技術和步驟。


開發技術

WD z 與 SFPT

WDz (WebSphere Developer for System z) 主要針對在 IBM Z 系列大型機上執行的既有系統和程式,進行開發,部署和整合的工具,在最新的 7.0 版本中,它提供了以下功能:

1.指導使用者部署應用程式到目標執行環境中,包括:WebSphere、CICS、IMS 等。

2.幫助開發者在 Z 系列平臺中,建立、維護、除錯和部署傳統的事務型和批處理應用程式,並實現與 Web 的整合。

3.能夠提升既有資產的重用和轉換,幫助使用者減少成本、縮短開發週期。

4.允許開發者迅速地建立結構良好的隨需應變 (On demand) 系統,實現與 WebSphere 和傳統的事務處理環境的整合,例如:CICS、IMS 和批處理系統。

5.支援 SOA、Web service 的建立和在 WebSphere、CICS 和 IMS 環境的部署。

6.提供基於 JSF UI 的視覺化開發平臺,支援 JAVA 和 EGL (Business-oriented Enterprise Generation Language) 語言。

EST (Enterprise Service Tool) 是整合到 WDz7.0 中的一個元件,SFPT (Service Flow Project Tool) 是它下面的一個子專案,在 WDz6.0 中叫做 SFM (Service Flow Modeling)。使用它,建立一個 Service Flow 工程,匯入不同的源程式或片斷,根據業務目標,進行流程編排、組合和介面及其訊息的對映,從而生成可部署的 Web Service 和執行程式碼,並建立 MVS 應用的聯結器。下圖描述了 SFPT 的結構和它相關的 artifacts:


圖 5. SFPT 結構圖

一個完整的 Service Flow 工程包含下面幾個部分:

  • Flow

    在一個 SFP 中,要實現不同的既有系統之間的組合、轉換,需要建立一個對應的 flow,對既有系統的介面按照特定的業務需求進行編排,對介面之間的輸入、輸出進行關聯和對映。結果,將會在該目錄下生成一個用 EMF 描述的 flow 檔案。

  • Interface

    對於建立一個 SFP,需要有一個業務目標或者需求的定義,它使用 WSDL 進行描述,並匯入到該目錄下,生成對應的介面檔案 (.wsdl) 和訊息定義檔案 (.mxsd)。

  • Terminal

    支援基於終端的應用程式的匯入,例如與 CICS 應用的互動,使用綠屏的命令方式。在 WDz7.0 中,使用者可以匯入 HATs Connections 和 HATs screens (3270, 5250) 到該目錄下。

  • Nonterminal

    在該目錄下,支援非終端應用程式的匯入,例如:COBOL ( 包括:.cbl 和 .cpy)、PL/I 和 BMS 檔案。

  • OutboundWebservice

    在 WDz7.0 中,SFP 增加了一個新的功能,它支援 CICS 的 Web service 的匯入。

在 EST 工程中,所有檔案的儲存 (MXSD、WSDL、FLOW) 使用 EMF 實現,最後產生的執行程式碼將部署在 CICS Service Flow Runtime 和 Host Access Transformation Services 中執行。

Service Flow 工程支援兩種 SOA 開發方法:

  1. 自底向上 (bottom-up) 的開發方法:從既有資產中實現一個 service。
  2. 中間會合 (meet-in-the-middle) 的開發方法:當目標 WSDL 和實現的元件都被提供,需要建立兩者之間對映和連線的程式碼。

在本樣例中,使用了中間會合的開發方法。

由於文章篇幅過長,所以本文被分成兩部分,您可以繼續訪問 下半部分

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14789789/viewspace-432960/,如需轉載,請註明出處,否則將追究法律責任。

相關文章