1. 程式人生 > 實用技巧 >如何建立Web服務

如何建立Web服務

如何建立Web服務

http://tech.51cto.com 2006-02-17 09:51 計算機世界報 我要評論(0) 一家公司把業務流程和應用功能分解成服務的能力,將決定它能夠獲得什麼樣的靈活性和可重用性,最終決定SOA專案的成功程度。 丹麥銀行(Danske Bank AS)在構建SOA方面的開創性工作已到了非常深入的階段,現在,它的大型機和應用伺服器釋出出來的服務有1000多項。但這家總部設在哥本哈根的銀行卻發現自己落入了讓人沮喪的困境。這家銀行的首席架構師Claus Torp說: “服務太多了,我們找不到它們。” 這個問題有可能讓SOA的主要優點之一 重用化為泡影。不得已,丹麥銀行開始著手改動服務的概念,改進服務中心庫,並制訂了執行最佳實踐的管理流程。結果把服務數量精簡至140項,這大大提高了可管理性。 如果你深入分析SOA方面的幾個開創者,就會發現丹麥銀行所採取的措施是公司能夠重複使用程式碼、提高開發應用的速度和效率、並且最終節省資金的關鍵所在。但這並非易事,同是,實施的先後順序也很重要。如,Sun公司曾構建了註冊中心(registry),還成立了一個架構審查委員會。但IT部門只是現在才回過頭去,對Sun的80到100項Web服務進行比較認真的審查及分析。 Sun的IT主管Karen Casella建議,開始踏上SOA之路的公司應當首先分析業務需求,然後確認需要哪些Web服務。她說: “我們吃過苦頭才明白了這個道理。我們還沒有完全弄清楚實施SOA需要什麼,就建立了一部分基礎設施。” 定義服務是關鍵
公司要弄清楚哪些業務流程可以轉化成服務、認真設計及定義服務,並且學會區別服務和元件。 丹麥銀行開始構建標準介面以釋出遺留程式時,它把服務定義為“一項功能”。如今它在較高的層面來描述服務: 即從邏輯上分組的功能和資料,譬如“顧客”或者“賬戶”。該銀行的140項服務每一個都由大約10個“操作”或者元件組成,這些實際上就是粒度更細的服務。目前共有超過1365個操作。丹麥銀行估計最終會有250項服務。 Torp說,一家公司把業務流程和應用功能分解成服務的能力將決定它能夠獲得什麼樣的靈活性和可重用性。 丹麥銀行利用建模工具來設計功能模組和業務流程的邏輯圖(Logical Map)。然後,它把業務流程與服務進行匹配,確保自己解決了所要解決的問題。 Torp說: “大量正向服務的開發工作就是為了確保,你可以在同樣的服務基本模組上執行不同的業務流程。如果你想取得良好效果,就要確保同樣的功能只有一個地方在實現。” 首席技術官Robert Wiseman說,Cendant公司的旅行分銷服務部門為了確定服務和服務元件的最佳粒度花了相當長的時間。最終確定服務是可以藉助名稱為Rosetta Stone的業務領域模型(business domain model)供外部呼叫的構件,而服務元件如日誌功能只是在內部呼叫。 所以“預訂酒店”這項服務可能會呼叫幾個低層服務,譬如該公司為顧客提供的經度/緯度“目的地查詢器”。但Cendant的貨幣兌換器卻是個元件,因為目前它並不提供給顧客使用。 Wiseman說,Cendant期望正在開展的一個專案能夠從整體應用抽取元件以獲得巨大回報。比如,旅客姓名記錄(PNR)是一個基本的資料單元,供預訂引擎和全球分銷系統(如Cendant的Galileo)使用。通過把“Super PNR”作為一項服務來提供,IT部門就沒有必要維護在不同應用裡面的六七個PNR。哈特福德金融服務集團公司在過去三年裡構建了一批Web服務及其他服務,但直到一年半前才開始在整個企業開展SOA方面的工作。 這家總部設在康涅狄格州的保險公司負責應用基礎設施交付的經理Benjamin Moreland說,非常適合成為企業服務的是兩個或者更多個應用需要的功能。“但不是每項功能都應當成為服務,”Moreland警告。他特別指出,釋出服務可能會給效能帶來影響。 建立註冊中心
廠商們也許期望基於通用標準發現整合協議(UDDI)標準的因特網註冊中心能夠迅速流行起來。但SOA的早期採用者更關心的卻是內部註冊中心。 不過,這並不是說UDDI因此沒有。UDDI對哈特福德公司來說實在太重要了,結果它選擇的註冊中心就是基於符合UDDI 3.0的產品(工作人員不願透露產品名稱,這是由於公司政策規定不得為廠商做宣傳)。註冊中心裡面包含描述服務的元資料以及通過特定傳輸協議與服務相連的機制。 但UDDI註冊中心並不適合每家公司。哈特福德各個部門繼續為各自建立的一些服務維護本地註冊中心,原因是哈特福德對哪些服務進入企業註冊中心有所選擇。 Moreland說: “我們不想什麼服務都放在裡面。我們覺得,放在企業UDDI裡面的應當是能為我們在整個企業帶來優勢和靈活性的服務。” 普羅維登斯醫療系統(Providence Health System)使用Infravio公司的管理框架管理其服務中心庫。 讓該公司原先持懷疑態度的人士大跌眼鏡的是,開發人員居然可以重複使用服務,原因是他們能夠找到定義介面的Web服務描述語言(WSDL)檔案。普羅維登斯醫療系統的研究開發主管Michael Reagin說: “我們通常把這稱之為‘像Google那樣搜尋’Web服務。如果要稍加改動,他們在幾小時內就可以完成,然後就可以重複使用服務。這樣,員工的工作效率提高了。大家都很高興。”如今,普羅維登斯醫療系統比較關注的問題是,如何從業務角度來管理其越來越多的Web服務及SOA框架。該公司有近50項組合式服務,每一項都由1到20項粒度更細的子服務組成。 找不到適合自身需要的註冊中心的早期採用者只好自行構建。丹麥銀行為來自其大型機及基於J2EE和微軟.Net的應用伺服器的諸多元件維護不同中心庫。 CIO Peter Schleidt說,這些中心庫能夠彼此複製服務,從而形成單一的邏輯中心庫——這實際上是UDDI註冊中心的超集,並增加了負載均衡等功能的業務操作引數。服務整合商的工作人員可以通過HTTP或者更有效的專有協議使用簡單物件訪問協議(SOAP),動態地選擇最有效的方式來呼叫服務。 丹麥銀行還為其服務及相應介面提供了一個結構化中心庫。該中心庫還存放了有關其功能模型和流程模型之間相互關係的資訊。甚至還設有中心庫管理人員,那樣開發人員可以隨時向他求助。但直到一年前才開始使用中心庫,“這比我們預定的要晚得多,”Schleidt如是說。 Web服務的管理必不可少
遇到緊要關頭,管理部門可以幫助公司堅持奉行SOA的原則。丹麥銀行分管產品、流程和IT開發的18個業務部門均設有指導委員會。但如果業務經理想急於打敗對手,一旦需要比較長的時間才能完成,他們有時候會忍不住拋棄通用的SOA方法。Schleidt說: “你需要一個管理流程,好應對上面這樣的情形。我們總是有時間在事後進行改變,那為什麼不改變做法,一開始就把事件做好呢?”這種一勞永逸的方法會產生長遠影響。Torp說,丹麥銀行現在有兩個個性化引擎、四項互動式顧客溝通服務以及四個支付處理應用。 幾年前,哈特福德成立了一箇中心部門,名為Property and Casualty Architects Collective,負責監管如何在整個企業採用SOA。該部門組建了一個參考架構,概述可以在特定環境下使用的推薦的方法、實踐及產品。 哈特福德的企業架構師James McGovern說: “其實質思想就是交流架構方面的想法、重複利用思維過程。工作的艱辛就體現在這方面,但正是這方面體現了價值所在。” 負責應用基礎設施交付的另一部門負責選擇及實施管理平臺、業務流程引擎和UDDI註冊中心,並且確保用來描述服務介面的WSDL檔案符合標準。沒有參與特定專案的架構師負責檢查專案的應用設計,確保服務沒有重複。 在Cendant公司,專案經理負有這項責任。可以通過Rosetta Stone業務領域模型當中基於XML的層,訪問服務名稱和輸入及輸出欄位。一個部門專門負責更新業務領域模型。Wiseman說: “這就是我們控制重複使用的方法。” 如果業務領域所有者發現某項服務早已在註冊中心裡面,服務會被打上標記,表明它適合重複使用。基本上由IT經理組成的SOA管理委員會隨後接過工作。開發人員用不著操心。 Wiseman說: “程式設計人員是最不適合做出決策的人。他們總是希望編寫新的東西。” (清水譯自《Computerworld》) 連結 針對Web服務的三種***方式 Web服務的共享式設計給企業與其合作伙伴之間交換資料和應用帶來了極大的方便,同時也帶來了安全隱患。***已經找到辦法在XML程式碼中插入Tag,而程式仍可以像一個正常的一樣執行。 “XML標準還在一點點完善,其中還存在一些我們沒有注意到的漏洞。”Forrester分析師Rany Heffner說。 根據專家們的分析,目前***有三種***Web服務和XML的方式: ● 偽造身份***,***偽裝成合法使用者獲得Web服務的訪問權; ● 惡意內容***,***者強制Web服務完成非法動作; ● 執行***,***通過XML訊息佔用伺服器資源。 儘管***的***方法我們已經知道,但目前要防範對Web服務的***還是非常困難的,因為這涉及很多方面,如伺服器、訊息和應用等。不過,企業首要任務是保證Web伺服器的安全,接下來才是決定哪些業務合作伙伴和僱員有權訪問它們、各種人員分別採用什麼方式和Web服務連線、使用什麼認證方式等。 軍火製造商Northrop Grumman公司就親身體味到了Web服務的安全困擾。Web服務是Myngc.com門戶的主要構件,原本計劃花6個月完成,但由於Web服務使用者驗證方面的原因,這個專案最後用了18個月才完成。 “當你希望把應用展示給你的合作伙伴時,安全問題就會凸現出來。” Northrop Grumma副總裁Raphael Holder說,他的企業最關注的問題是,如何保證遠端安全地訪問Web服務應用,保證所有訪問門戶的使用者都是經過授權的。 為了保證資料的安全,Northrop Grumman部署了RSA公司的公鑰系統,給所有訪問門戶的被認證的使用者發放Token,這些Token也可以釋出給那些需要各種不同訪問能力的合作伙伴和客戶。Holder說,該門戶現在有12萬用戶。 雖然已經採用了這些技術,但Holder坦言,目前使用Web服務仍然存在風險。“我們一直小心地管理者這個門戶,訪問授權也僅限於我們非常信任的合作伙伴。”他說。 與Northrop Grumman一樣,旅遊公司Wyndham也一直在探討如何提高Web服務的安全性。Wyndham的統計表明,從2003年5月到2004年5月間的一年時間裡,該公司被***達950萬次之多,這其中包括******、Web網站宕機和病毒。 公司高階副總裁和CTO Mark Hedley介紹說,有幾種方法可以保證Web服務的安全。其中一個最常用的辦法是在傳輸層保證應用安全,具體方法是使用雙向的SSL連線或者專門的×××連線。SSL提供了多種驗證方法,如客戶端驗證等。另一個辦法對於需與多個合作伙伴連線更合適,就是使用XML安全閘道器。有一些可以用來保護XML和Web服務免遭***網路裝置,它們提供XML加密功能、數字簽名、訪問控制以及其他一些功能。業內不少人預計新的標準也將提高Web服務的安全性。 Heffner認為,由於新標準和新產品的出現,將會改善Web服務的安全性。“XML安全閘道器為防止******提供了更好的解決方案,它比一年前的方法要有效得多。”他說。 但是安全問題不能成為實現Web服務的障礙,Heffner說,“你現在可能在安全方面要比3年前投入更多,我們的態度是,如果現在Web服務還有商業價值,我們就應該支援!” (責任編輯:銘銘)