摘要:該文分析了SOA產生和發展。對SOA中服務的有關知識進行了探討。SOA的發展使得業務的集成更加方便和快捷,它的優勢決定了其受到人們的關注和運用。
關鍵詞:SOA;服務;業務集成
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2009)26-7411-02
Discusses the Application of SOA Technologies
CHEN Wen1, REN Li-wei2, LIU Xiao-hui3
(1.Computer Science and Information Techonlogy, Guizhou University, Guiyang 550025, China; 2.Zhejiang Lishui Electric Power Bureau, Lishui 323000, China; 3.China Mobile Group Qinghai Company Limited, Xining 810001, China)
Abstract: The article has analyzed the emergence and development of SOA.discussed the knowledge of service in SOA.The development of SOA enables the business integration more convenient and efficient,it's advantages decide people to pay their attention on it and use it.
Key words: SOA; service; business integration
1 概述
靈活性低、維護性難是傳統的企業應用集成存在普遍的問題,在這樣的環境下,需要一種新的架構來解決遇到的問題,SOA(Service Oriented Architecture,面向服務的體系架構)順勢而生,SOA的概念在1996被提出來之后,它的發展一直受到人們的關注,近年來,各軟件廠商分別推出自己的SOA產品,許多企業在企業信息化不斷加深的情況下,也努力使自己的的架構體系也體現了SOA的風格。通過實施SOA就可以克服在傳統架構體系中業務集成過程中所遇到的問題,使敏捷的、不受限制的業務集成變成現實。
2 SOA產生的原因
由于大量信息孤島的產生,在存在不同操作系統、系統軟件的基礎環境中,我們不可避免面臨的一個問題是對不同供應商提供的基于不同技術架構的信息系統進行整合, 對信息高度集成化的要求和現有軟件系統的不足之間的矛盾已經制約了企業的發展。對以上問題而言SOA是一個不錯的選擇方案,在適應業務改變方面它可以更加靈活,現有的系統功能我們可以充分利用,同時提供了系統各部分的通信能力。
3 SOA的定義
SOA三個字母所代表的是Service-Oriented Architecture,在國內普遍把它翻譯為面向服務架構,在對SOA的認識沒有一個標準的情況下,可以這樣認為:SOA是一種架構模型,它以業務為中心,對系統中服務的定義采用標準形式,而服務的部署、組合和使用采用定義好了的標準方式。
4 SOA的相關技術
SOA作為面向服務的體系架構,其中最關鍵的是服務,那什么是SOA中的服務呢?我們可以這樣認為:服務是一個功能模塊,是一段被封裝了的程序。每一個服務都能為我們提供一定的功能。
在SOA中,服務至關重要,那我們怎么來確定一個軟件系統中每一個服務的功能呢?這就涉及到服務模塊的劃分,一般認為,在SOA中服務模塊的劃分是粗粒度的,所謂的粗粒度和細粒度是一個相對的概念,對服務模塊劃分過粗,就會影響可重用性,對服務模塊劃分過細,就會增加系統的復雜性。所以在系統的構建過程中,對服務模塊劃分的粗細把握是一個至關重要的問題。服務具有不同的用處和要求,如有的時候我們需要進行協議轉換或數據轉化,有的時候我們需要服務的質量更好等,并且在SOA架構中處于不同的層次,所以各服務模塊的偏重有所不同,有的以數據和邏輯為中心,有的主要是提供適配器等中介功能,而有的則側重于業務流程。例如我們我們想提供一個繪畫的軟件,可以對其進行服務劃分,可以把畫三角形作為一個服務,畫四邊形作為一個服務,畫圓作為一個服務等,我們還可以定義一個流程服務來調用這些服務。可以采用下面的方法聲明一個畫圓的服務:
作為SOA中的服務,它首先必須具備的一個特點就是松耦合[3],也就是服務之間互不影響,一個服務的改變不會對其它服務產生影響,如上面提到的繪圖軟件中的的畫三角形的服務的改變不會對畫四邊形的服務產生影響;服務的第二個特點是服務的可重用性,由于服務被定義為一個封裝了的可以用于提供特定功能的模塊,因此它可以在不同的軟件中提供相同的功能。例如一個提供查詢功能的服務,我們可以把它用于網上購物系統,也可以把它用于圖書館管理系統;作為SOA中服務的第三個特點,可維護性在于由于服務對于外界來說,只能看到服務所提供的接口,它可以給我們提供的信息只能是該服務提供了什么樣的功能和所需要的參數,至于在服務內部采用什么編程語言和怎樣實現服務一無所知。當服務的內部發生改變時,外部也可以照常運行。
有的時候有許多服務提供的功能都是一樣的,對于服務需求者來說,如何選取一個適合自己的服務就是一個必須考慮的問題,我們可以在服務庫中查詢到服務供應者的消息、服務的物理位置、所需費用等有可能需要的一些額外的信息作為參考來取舍服務。這樣我們就可以與通過服務的接口知道服務提供的都能和所需要的參數結合起來確定我們所需的服務從而構建適合自己的系統,服務庫的建立對于服務的積累來說也至關重要。
在SOA中接口的作用是向服務需求者描述服務的功能,如何定義SOA中服務的接口,一般可以采用WSDL來定義接口,對于WSDL來說,基于XML的它借助于XML的平臺無關性實現跨了平臺。但是WSDL并不是唯一的選擇,我們也可以采用JAVA語言來定義接口。例如我們可以采用下列方式定義畫圓的服務的接口采用何種方式:Circle是在包draw下的一個JAVA接口,
或者
在IT技術發展的今天存在大量的編程語言,因此在SOA中如何實現接口定義中的功能也就是服務如何實現中我們可以采用不同的平臺和編程語言,平臺方面我們可以采用J2EE平臺或者.NET平臺,編程語言方面我們可以采用JAVA,C++等。可以采用下列方法聲明采用JAVA語言來實現一個服務:CircleImpl是在包draw下的Circle接口的實現程序
如果我們要求一個服務在被訪問時要求進行身份認證,這就涉及到SOA中服務質量這個重要方面,它屬于非功能性需求(Non_Functional Requirement)。例如在IBM的SCA中采用策略框架(policy framework)來定義服務質量[1],它包含策略意向(policy intent)和策略(policy)兩個主要概念,我們可以在聲明一個服務的時候,如果我們采用的是XML文檔,那么我們就可以選擇把策略意向和策略分別作為service元素中的子元素binding的2個屬性requires和policysets的取值,其中requires的取值范圍表達了我們希望服務能夠提供的非功能性需求的要求,而policysets的取值范圍表達了服務能夠提供的非功能性需求,在此需要指出的是并不是所有的服務都有非功能性需求的要求,也就是說requires和policysets并不是2個必選的屬性,但是我們利用這2個屬性就能對系統的安全和可維護性等進行控制。
在實際工作中,各種服務所提供的功能并不是單一的,有可能它提供的服務需要有其他服務所提供的功能所組成,一個服務中可能包含其他服務,我們可以按照工作需求,把其分成若干子服務,開發完成后,我們可以把這些小的子服務組合起來構成一個大的服務。同樣以上面提到的畫圖軟件為例,它是由畫三角形的服務、畫四邊形的服務、畫圓的服務、流程服務等組成。其中調用又分遠程調用和本地調用,同時,調用多個服務時如何安排他們之間的調用順序又涉及到流程編排。
在異構、分布式系統中存在大量的數據,但是這些數據并不是一種統一的形式,這其中有的數據來自關系數據庫,有的是XML數據,這使SOA中服務之間的通信遇到了困難,我們必須尋求一種統一的方式來對各種數據進行處理以便于各服務之間的交互。我們可以用數據模型來解決該問題。
在SOA中,有各種不同的角色,如服務提供者和服務使用者,各種角色可能來自一個企業或者不同的企業,為了把不同的角色聯系起來,就需要服務總線,服務總線的作用就是為了通信,它用于克服由于整合過程不同系統帶來的相互影響問題,不論參與者是來自相同的操作系統還是不同的操作系統,采用同一編程語言還是不同的編程語言。
為了使我們在SOA中可以重用服務和共享服務,服務的接口定義一定要采用統一的標準,正是由于標準的運用,所以SOA才可以獲得成本的降低,這里的成本包括金錢和時間,也使系統的集成更加方便。企業在競爭過程中如果采用了SOA方案,就能利用SOA的靈活性,采取業務驅動的方法,根據需求的改變作出相應的改變。同時也有利于部門,企業內部和企業間的合并順利開展。
5 結束語
作為一種新的架構思想,松耦合、與平臺無關的特點使SOA成為了許多企業構建架構體系的首選方法,通過實施SOA,我們可以更好地利用原來系統的遺留資產,同時也使新系統的維護更加容易,在降低成本的基礎上進行業務集成。
參考文獻:
[1] 王紫瑤.SOA核心技術及應用[M].北京:電子工業出版社,2008.
[2] BEA Inc.SOA一軟件架構新超越[J].dev2dev專刊,2004.
[3] 梁愛虎.SOA思想、技術與系統集成詳解[M].北京:電子工業出版社,2007.
[4] Erl T.SOA概念、技術與設計[M].王滿紅,陳榮華,譯.北京:機械工業出版社,2007.
[5] 龐引明.SOA應用系統總體框架及相關概念[J].計算機世界報,2005(23):B7,B8.