熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

Eclipse新成員Swordfish詳解

2013-11-23 20:51:06  來源: Java開源技術 

  企業服務總線(ESB)一直以來都是每個運營商SOA策略的基石然而一直以來由於其過於龐大架構集中化而且與已有的應用程序難以結合的關系ESB一直未能將SOA的價值充分的發揮出來

  正因如此Swordfish選擇了一條全新的道路建立在Apach ServiceMix和Apache CXF等開源組件之上Swordfish提供了一個可擴展框架這個框架為應用程序開發者以及系統集成商們提供了自己建立ESB的可能性——而且是量身訂造而且Swordfish不僅僅是框架秉持著Eclipse可擴展框架與exemplary插件相結合的傳統Swordfish項目也把目標放在了企業級插件上這將打造一個對E(企業)十分重視的成熟的開源ESB為了展示Swordfish相對於其他開源ESB的優勢我們以下會著重說明那些總結了在真實的企業環境下積累了數年SOA經驗所帶來的功能

  第一個功能可以在運行時(runtime)中將一個服務注冊(Service Registry)與一個動態綁定服務(dynamically bind services)整合到一起也就是說與其他ESB所不同Swordfish執行這個任務將無需一個靜態的關聯以往這個靜態關聯是用來將使用服務的組件(客戶)與提供服務的組件(供應方)聯系起來的Swordfish的做法是一個客戶找到一個供應方靠的是邏輯標識符這個邏輯標識符又依照一個策略將此服務界面標識為重要所謂策略就是有關用戶非功能能力及需求的一個描述有了這兩條信息加上包括了已有服務供應方的數據庫以及他們各自的策略服務注冊會選擇一個合適的供應方並計算出一個有效策略這個策略將掌管以後在客戶和供應方之間的一切通信這個方法的優勢是明顯的客戶與供應方被松散的組合在一起無需改動商業應用程序代碼就可以輕松改動雙方的非功能參數

  另一個Swordfish的顯著特征是它的架構模式——分布的ESB(Distributed ESB)或者叫做聯邦的ESB(Federated ESB)這個意思就是說兩個服務參與者之間的通信無需中心組件只需建立通信後便可實現相對於傳統的中心輻射型集成架構這種模式的優勢在於它不會因中心組件過時而形成性能瓶頸從而整個系統具有更強的伸縮性用戶在SOA化的過程中實現更多功能的同時無需花費大筆的精力財力在硬件設施上

  另一方面聯邦ESB的潛在缺陷在於它令系統的管理更加復雜化不過這個缺陷可以通過一個遠程配置機制來彌補在Swordfish中管理員可以方便並高效的配置大數量分布的Swordfish個體而且監控功能也很完善監控功能在業務過程管理(BPM)中尤其的重要因為細致監控事件是一個完整的業務活動監控(BAM)的前提而BAM一般都基於復雜事件處理(CEP)

  OSGi和JBI全面詳解

  Swordfish框架所使用的是現在SOA通用的標准在底層有OSGi具體來說就是Equinox即Eclipse基金會的OSGiOSGi提供了組件模型一個模塊部署系統以及一個clean class加載系統在上層有JBI標准來實現組件之間的消息抽取(messaging abstraction)以及消息路由(message routing)一開始的JBI 使用自己的組件模型和部署系統不過後來轉而使用了OSGi這也符合JBI 工作組的情況還有Apache ServiceMix的第Apache ServiceMix這個Apache的JBI容器(JBI container)正是Swordfish中的核心消息路由引擎而ServiceMix不僅僅提供路由功能它本身就包含了大量做好了的組件這些組件可以直接被用於連接業務邏輯(business logic)或用於傳輸通道以及協議

  綜合來說Swordfish是一個建立在ServiceMix基礎上並將功能延伸至企業SOA范圍的框架Swordfish核心使用ServiceMix的公共擴展點(public extension points)在規范化消息路由器(NMR)中與消息流建立聯系

  與NMR內部建立聯系的中心概念就是攔截器(Interceptor)攔截器是一段代碼這段代碼在消息經過NMR進行消息交換時將其攔截下來並對這個消息做一番動作Java界面可以在Swordfish API中起到攔截器的作用借助一些插件便可讓這個攔截器實現一些特定任務如消息認證(validation)消息轉換(transformation)等攔截器對消息交換作用的次序可以通過Swordfish框架核心中一個叫做Planner的組件來計算並定義計劃具體計劃如何實施可以由用戶來決定所以API中還有一個叫做PlannerStrategy的界面此界面可以通過插件來使用舉例來說評估一個消息交換中的策略便可以通過這個PlannerStrategy來實現除了傳統攔截器以外在特定情況下還可以使用特定的攔截器比如有一種攔截器可以在服務注冊中觀察一個服務並為相應的交換重建路由這個攔截器的基本性能(JBI相關)是核心運行中的一部分不過具體的觀察過程如何實施則靠一個將ServiceResolver界面實施到框架API的插件來完成所有的公共API都是這樣工作的

  面向應用程序開發者的注冊和版本庫

   以上我們簡單介紹了使用服務注冊來解決運行時服務端點的優點不過服務注冊還有更好的地方它提供了一個面向服務架構中全部服務的全面總覽而且對於服務再利用有很大的用處而服務再利用則是SOA規范的主要優勢之一如果服務界面在定義的時候就仔細注意到再利用的方面那麼無論多麼復雜的服務在理論上也無非就是把一堆封閉的盒子排列好再連接起來的問題而已

  以後服務注冊還會增添服務版本庫(Service Repository)的功能此功能可以將所有SOA相關的部件(比如服務界面介紹策略等)作為SOA工作流中的一部分安全並有序的保存起來由此可以實現版本控制定義認可工作流分析和報告可行性等這些功能令企業建立並推廣管理流程(governance process)成為可能而管理流程則是成功SOA的必要組成部分


From:http://tw.wingwit.com/Article/program/Java/ky/201311/29204.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.