SOA有哪些基本原則?
了解SOA是為了解決什么樣的問題,我們先來了解一下SOA有哪些基本原則。
粗粒度
在SOA中服務粒度有兩種相關的意思,即服務是如何實現的,服務使用和返回了多少數據或多少消息。細粒度服務執行了最小的功能,發送和接收少量的數據。粗粒度服務執行了較大的業務功能,并交換了更多的數據。
原則:細粒度服務是供粗粒度服務或組合服務使用的,而不是由終端應用直接使用的。如果應用是使用細粒度服務建立的,則應用將不得不調用網絡上多個服務,并且發生在每個服務上的數據量較少,因而會對對系統整體性帶來影響。所以,粗粒度服務的用戶不能直接調用他所使用的細粒度服務。同時,由于粗粒度服務可能使用多個細粒度服務,因此它們不能提供粒度級的安全和訪問控制。
松散耦合
松耦合的系統特點是靈活,而應用到SOA中的目的就是將服務使用者和服務提供者在服務實現和客戶如何使用服務方面隔離開來。服務提供者和服務使用者間松散耦合背后的關鍵點是服務接口作為與服務實現分離的實體而存在。這是服務實現能夠在完全不影響服務使用者的情況下進行修改。
大多數松散耦合方法都依靠基于服務接口的消息?;谙⒌慕涌谀軌蚣嫒荻喾N傳輸方式(如HTTP、JMS、TCP/IP、MOM等)?;谙⒌慕涌诳梢圆捎猛胶彤惒絽f議實現。
可重用部件/服務
如果完全按照可重用的原則設計服務,SOA將可以使應用變得更為靈活??芍赜梅詹捎猛ㄓ酶袷教峁┲匾臉I務功能,為開發人員節約了大量時間。
設計可重用服務應該是與數據庫設計或通用數據建模類似的最有價值的工作。
基于標準
Web Service是目前實現SOA應用的一項基本的,適用的技術,它為服務的訪問提供了一個被廣泛接受的開放標準。
JBI(JSR208)是SUN推出的基于Java的SOA標準,隨著在JSR 208中被定義,它也成為了把服務容器組裝為合成應用的標準。
Service Component Architecture (SCA)和Service Data Objects (SDOs)標準是IBM和BEA所推出的SOA標準,并在Apache Group建立了Apache Tuscany項目。
在我看來,標準之爭并不是關鍵所在,但就JBI和SCA/SDO標準而言,JBI的應用范圍更嚴格,可能最終會成為更大的標準中的一部分Java實現。
SOA面臨什么樣的問題?
﹡繁雜的應用和協議
﹡頻繁變化的服務需求
﹡管理
﹡監控
﹡網絡瓶頸
﹡標準的缺失
﹡困難的跨團隊變更管理
﹡這些問題都比較好理解,也不是只有采用SOA才能解決問題的。但是作為典型的SOA應用,以上的情況都是必須面對的,也是SOA系統函待解決的。
SOA的應用場景是怎樣的?
﹡適用場景
﹡集成成本持續增長,而并未因為可提供真正投資回報 (ROI) 的新業務機會而得到緩解。
﹡兼并和收購是企業擴大市場份額和獲得新發展機會的業務模式的核心。
﹡解決方案要求對來自異構系統和編程模型的業務功能進行集成。
﹡業務的生存依賴于根據市場變化快速調整或即時響應競爭威脅的能力。
﹡全球經濟的影響要求企業事半功倍地開展業務,而且有必要依賴業務合作伙伴提供非核心業務功能。
﹡就提高收益而言,與業務合作伙伴協作的效率對企業十分關鍵。
﹡企業業務資產的價值在減少,因為不能對其進行評估,以在最初用途之外的其他地方使用。
﹡企業員工的效率出現了問題,因為他們的大部分時間并沒有花在提供公司業務模型的核心功能和服務上。
﹡企業的業務充滿了機會型的業務工作。
﹡企業從頭開始開發新應用程序。(SOA應當作為定位將來的新應用程序的缺省架構模式,當然,業務條件有其他限制時除外。)
不適用場景
﹡企業只將小部分 IT 預算用于集成項目。
﹡企業的大部分流程都是手動的或以文檔為中心的,自動化的機會幾乎為零。
﹡企業的大部分應用程序開發都使用相同的編程模型。
﹡企業的操作由一個或兩個客戶關系管理 (CRM) 和企業資源規劃 (ERP) 應用程序管理,幾乎沒有集成要求。
﹡企業的現有技能庫與實現支持 SOA 的基礎結構所需的技能庫之間存在重大差異。
﹡未發現可從 SOA 提供的功能受益的業務需求或機會。
﹡新業務服務的可用性將對現有的收益流帶來負面影響。
﹡企業依賴的業務合作伙伴對公司間流程的自動化采用了不同的優先級。
﹡企業的主要業務的開展涉及到海量且同步性和實時性要求非常高的事務。