WebServices祕訣:設計SOA

【IT168 技術文檔】

    過去六個月以來,我在RCG信息科技公司使用網絡服務(Web services)和企業流程管理工具來建置一套服務導向架構 (SOA,Service-Oriented Architecture)。這個經驗讓我更有信心與你分享打造絕佳SOA的祕訣。

  以下經驗將會讓貴公司降低對ERP應用的依賴,不再受應用與供貨商的牽制。你的公司將可開始在實時的環境下運作,從此批處理(batch)這個字也會跟打卡(punch card)一樣進入IT部門的歷史詞彙中。

  中間件不再是代罪羔羊

  最初建立SOA時,我們把每樣東西都放入中間件中,它可針對目標網絡服務進行XSL轉換,並向UDDI查詢目標網絡服務的位置,甚至還啓動目標網絡服務。於是,似乎只要出了任何問題只需歸咎於「中間件」就行了

  因此,我們決定繞過中間件,讓中間件只當作連接應用程序的「聯機管道」而已;中間件接受來源地的XML檔案,並進行XML語法分析(parse),找出意欲前往的目的地,再將XML傳送給預定的目標,而預定目標則會負責轉換XML的工作。

  這裏學到的教訓是:移除所有可能在中間件中的東西,你只能把它當作商業流程,或作爲傳送XML的管道。

  利用XSLT將數據轉爲任何格式

  XSLT(可延伸樣式表語言轉換)對於跨應用的通訊來說是很重要的。我們還沒有發現導入XSLT之後,系統和系統之間無法溝通的例子。XSLT是種典範轉移(paradigm shift),若你是第一次使用,你必須先從小部分功能開始着手,然後再逐步擴展。筆者推薦名爲Beginning XSLT的工具書,作者爲Jeni Tennison,該書包含9成常用的XSLT。

  以郵件自動通知問題點

  每天都會發生網絡斷線、數據庫損毀、應用服務器當機、XML檔案不完整、XSLT和你想要的功能有所出入,還有,你的中間件有些小問題。因此,要準備好能夠每天自動處理這些問題,不要手動處理這類問題,否則要是相關人員度假去或改轉移至其它新項目時就會出現問題。你可利用下列方式來處理:

  •   以系統或是整合點(integration point)爲基礎來設定郵件羣組
  •   列出系統可能會發生的全部錯誤,和曾被你忽略的問題細節
  •   允許使用者爲他們的系統設定錯誤
  •   以系統或是整合點爲基礎,允許使用者和開發人員管理他們想要被知會的錯誤信息

  因爲信息通知將會開始塞爆使用者的收件箱,可以預見,使用者將會央求解決所有的錯誤。當然,開發人員不能忽視且讓這樣的情況發生。

  在建置完成的前幾週中,我們統計了每個整合點的錯誤排名,藉此評估哪些錯誤應該優先處理。目前,我們的開發人員已經很少收到錯誤通知了。

  •   我們建立隊列(queue)和行動(action)來處理錯誤
  •   我們使用先進/先出(first in/first out)隊列來處理應用程序當機
  •   我們通知來源系統重送那些沒有被目標系統收到的記錄

如果有人輸入錯誤的WSDL檔案位置,我們設定UDDI會每隔一段時間重新檢索,如此開發人員便可直接更新UDDI即可,而不用重送記錄。

  現在整個SOA便可平順運作了,因爲即使有問題發生,中間件與隊列也會處理錯誤。現在開發人員僅需處理一些例外狀況,並可專注在其它商業開發項目上,在維護舊系統上則不用耗費時間。

  好用的動態啓動

  如果你已開始建立SOA,不妨順便學習動態啓動網絡服務的方式。藉由傳遞WSDL檔案位置、你想要啓動的方法、客戶端程序的適當參數,你就可利用一個網絡服務客戶端程序啓動任何的目標網絡服務,這樣也可以減少維護成本。我們在這個計劃中使用Apache的WSIF。如果你爲每個網絡服務都建立一個客戶端程序,那每次網絡服務一有變動,你就要每個程序都去修改了。

  UDDI:企業的服務目錄

  我們使用Systinet旗下的WASP UDDI建立一企業級UDDI,這與SOA或企業級的SOA不同。UDDI可當作搜尋網絡服務的企業目錄,開發人員會與這些網絡服務緊密結合在一起,如此一來,其它系統的開發人員若需密碼或合作測試,就有接觸管道。我們整理了一份「如何連上企業」的手冊,好讓開發人員得知新近合併的公司。

  開發人員可依唯一識別鍵(unique key)來查詢網絡服務的位置。如果產品服務器當機,我們可以將所有的識別鍵指向產品備份服務器上的網絡服務。

  SOAP信息偵錯

  網絡服務主要就是進行SOAP信息的接收與傳送。我傳遞一個SOAP信息給你,這個信息就像信紙放在信封中寄出一樣,而SOAP的主體被包裝在SOAP信封裏面。SOAP主體是由我這端來控制,直到我放到信封內寄出爲止,之後目標系統能夠打開信封,它就能夠控制SOAP主體。然而,目標系統偶爾無法辨識出SOAP信封爲有效的SOAP信息。這種情況在Java以動態啓動方式傳送給.NET的網絡服務時尤其明顯,因爲該SOAP信息是爲你動態產生的。

  還好市面上有SOAP監視軟件,可捕捉在應用程序之間所傳送的信息。你可以從來源系統中瞭解SOAP信息是如何建構的,而且還能夠修改它。我們使用Apache.org旗下的Axis(SOAP Server)所附贈的免費SOAP監視軟件,它甚至可以其偵錯.NET SOAP信息。

  成功的祕訣

  以下有幾個使用網絡服務設計SOA的建議:

  •   只把中間件當作傳遞兩邊(來源與目的地)信息的管道。
  •   一旦數據格式被系統接受後,善用XSLT來解讀數據。
  •   建立錯誤通報系統
  •   熟悉動態啓動網絡服務以減少維護成本
  •   取得SOAP監視軟件,讓開發人員可瞭解來源系統到底傳遞什麼給予目標系統
  •   成爲處理SOAP信息的專家
  •   若要建立企業級的SOA,首要研究如何取得UDDI

原文地址:http://tech.it168.com/j/2007-09-10/200709101404970.shtml

 

發佈了38 篇原創文章 · 獲贊 2 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章