什麼是soa
我們可能應該回答的第乙個問題也是最基本的問題。什麼是面向服務的體系結構(service-oriented architecture, soa)?這個問題的答案實際上涉及與開發相關的若干不同方面。
soa 是一種 it 體系結構樣式,支援將您的業務作為鏈結服務或可重複業務任務進行整合,可在需要時通過網路訪問這些服務和任務。這個網路可能完全包含在您的公司總部內,也可能分散於各地且採用不同的技術,通過對來自紐約、倫敦和香港的服務進行組合,可讓終端使用者感覺似乎這些服務就安裝在本地桌面上一樣。需要時,這些服務可以將自己組裝為按需應用程式——即相互連線的服務提供者和使用者集合,彼此結合以完成特定業務任務,使您的業務能夠適應不斷變化的情況和需求(在有些情況下,甚至不需要人工干預)。
這些服務是自包含的,具有定義良好的介面,允許這些服務的使用者——稱為客戶機或使用者——了解如何與其進行互動。從技術角度而言,soa 帶來了「鬆散耦合」的應用程式元件,在此類元件中,**不一定繫結到某個特定的資料庫(甚至不一定繫結到特定的基礎設施)。正是得益於這個鬆散耦合特性,才使得能夠將服務組合為各種應用程式。這樣還大幅度提高了**重用率,可以在增加功能的同時減少工作量。由於服務和訪問服務的客戶機並未彼此繫結,因此可以完全替換用於處理訂單的服務,下訂單的客戶機-服務將永遠不會知道這個更改。所有互動都是基於「服務契約」進行的;服務契約用於定義服務提供者和客戶機之間的互動。通常,您將通過建立「基於訊息的」系統來實現此目標。
從業務的角度來說,面向服務的體系結構的重點在於開發能幫助您完成業務任務的技術,而不是通過技術約束來規定您的行動。例如,銷售過程(製造、運輸和收到貨款)可能會涉及數十個步驟和若干不同的資料庫和計算機系統。但就其實質而言,此過程包含一系列人工活動,例如:
銷售人員找到潛在客戶
客戶訂購產品
生產部門製造產品
生產部門發出產品
收款部門開具產品帳單
客戶支付產品貨款
面向服務的體系結構基於這些實際活動或業務服務進行組織,而不是形成公司所維護的不同的資訊豎井 (silo)。
通過實現 soa,可以帶來大量好處,包括以下各個方面:
更高的業務和 it 一致性
基於元件的系統
鬆散耦合的元件和系統
基於網路的基礎設施,允許分散於各地且採用不同技術的資源協同工作
動態構建的按需應用程式
更高的**重用率
更好地標準化整個企業內的流程
更易於集中企業控制
soa體系結構
web 服務是用於實現 soa 的最常見技術標準。不過,這並不是可以用於開發 soa 的各個部分的唯一技術。很多 soa——實際上是大部分——都涉及到整合遺留資料,此類資料報含在使用 mqseries 和 common object request broker architecture (corba) 等技術的系統中。其中的許多技術都已針對 soa 進行了調整,不管有無 web 服務包裝均可使用。事實上,可以僅使用 mqseries、corba 甚至遠端過程呼叫(remote procedure call,rpc)技術來實現 soa。但 web 服務正迅速成為用於支援 soa 的事實標準。
soa生命週期
由於 soa 涉及到業務的諸多方面,因此需要從一開始就對 soa 專案進行細心的規劃和設計。您需要考慮專案的整個生命週期,從最初的階段到第乙個實現,再一直到可能的修訂和重用。
現在讓我們看看 soa 生命週期,如圖 1 中所示。此部分概略說明了在生命週期的各個階段發生的事項,並詳細介紹了實現生命週期的各個步驟。
建模
面向服務的體系結構專案的第一步幾乎和技術沒有任何關係,所有事項都與您的業務相關。請記住,面向服務的方法將業務所執行的活動視為服務,因此第一步是要確定這些業務活動或流程實際是什麼。對您的業務體系結構進行記錄,這些記錄不僅可以用於規劃 soa,還可以用於對實際業務流程進行優化。通過在編寫**前模擬或建模業務流程,您可以更深入地了解這些流程,從而有利於構建幫助執行這些流程的軟體。
建模業務流程的程度將依賴於預期實現的深度。另外,這個程度還依賴於您在開發團隊中擔任的角色。如果您是企業架構師,您將會對實際的業務服務進行建模。如果您是軟體開發人員,您將可能對單個服務進行建模。
組裝
對業務流程進行了建模和優化後,開發人員可以開始構建新的服務和/或重用現有的服務,然後對其進行組裝以形成組合應用程式,從而實現這些流程。在「建模」步驟中,您已經確定了需要何種型別的服務以及它們將訪問何種型別的資料。已經存在某種形式的實現這些服務或訪問該類資料所需的一些軟體。「組裝」步驟將要找到已經存在的功能,並為其新增服務支援。另外,還涉及到建立提供功能和訪問資料來源所需的新服務,以便滿足您的 soa 涉及的業務流程範圍內的需求。
部署
進行了建模和組裝後,要將組成 soa 的資產部署到安全的整合環境中。此環境本身提供專門化的服務,用於整合業務中涉及的人員、流程和資訊。這種級別的整合可幫助確保將公司的所有主要元素連線到一起協同工作。此外,部署工作還需要滿足業務的效能和可用性需求,並提供足夠的靈活性,以便吸納新服務(並使舊服務退役),而不會對整個系統造成大的影響。
管理
系統就位,一切都正常執行。 現在您可以對一切放手不管了,對嗎?不對。部署後,需要從 it 和業務兩個角度對您的系統進行管理和監視。在「管理」步驟中收集的資訊用於幫助實時地了解業務流程,從而能更好地進行業務決策,並將資訊反饋回生命週期,以進行持續的流程改進工作。您將需要處理服務質量、安全、一般系統管理之類的問題。
在本步驟中,您將監視和優化系統,發現和糾正效率低下的情況和存在的問題。由於 soa 是乙個迭代過程,因此,在此步驟中,您不僅要找出技術體系結構中有待改進之處,而且還要找出業務體系結構中有待改進之處。
完成此步驟後就要開始新的「建模」步驟了。在「管理」步驟中收集的資料將用於重複整個 soa 生命週期,再次進行整個過程
控制
soa 是一種集中系統;其中可以包含來自組織的不同部門的服務,甚至還能包含來自組織外的服務。如果沒有恰當的控制,這種系統很容易失控。
控制對所有生命週期階段起到鞏固支撐作用,為整個 soa 系統提供指導,並有助於了解系統全貌。它提供指導和控制,幫助服務提供者和使用者避免遇到意外情況。
soa採用階段
已經向您介紹了面向服務的體系結構和 soa 開發的步驟,您現在可能已經確信應該開始構建自己的 soa 了。如果您已經構建了基於 web 的軟體服務,則已經達到了 soa 採用的第乙個階段。在此部分,我們將分析各個採用階段(從偶然構建服務到基於面向服務的體系結構原則對業務進行全面轉換),從而幫助您了解自己目前所處的位置以及確定需要實現的目標。
soa 成熟階段
您不大可能立即基於 soa 進行全面的轉換。事實上,孤注一擲的方法會增加失敗的風險。應該轉而採用迭代的方法逐步通過各個採用階段,首先開發少數試點專案服務,然後逐步將您的 it 系統更新為在 soa 內工作的服務。我們將討論以下 soa 採用階段:
構建服務
整合 轉換 it
轉換業務
構建服務:具有特殊連線的根據需要提供的服務
整合:具有可靠連線的系統標準化服務介面
發現了鬆散耦合體系結構的優勢、方便性和易維護性後,下一步就是利用這種靈活性通過組合服務來建立新的組合應用程式。例如,員工狀態服務可以與經理審批服務組合,以形成請假服務。這個過程可以採用自頂向下的方法,將重點放在最終結果和查詢元件組成部分上。或者,可以採用自底向上的方法,將重點放在各個組成部分上,看看可以基於這些組成部分構建何種服務。他們之間的鏈結是預先計畫的且定義良好。
這個階段涉及到對您的資訊科技基礎設施進行轉換,以便充分利用 soa 的優勢。在此階段,所有系統將轉換為基於服務的應用程式,鬆散耦合是其中的規範做法,而不是例外。系統的所有元件都將根據 soa 進行整合和連線,it 系統的所有部分都在 soa 內工作。
轉換業務:對服務進行動態的事件驅動的重新配置
在 soa 成熟的最後乙個階段,業務與 soa 完全整合,達到了這樣乙個程度:所有合適的業務活動都被視為服務,可以最終在技術體系結構中對其進行建模、分析和例項化。達到此階段需要業務部門進行大量的工作和投入;不過,達到此階段後,業務將從面向服務的體系結構獲得最大的回報。
ubuntu新手入門
ubuntu使用設定之介面篇 ubuntu系統裝好了,不過怎麼看上則呢麼醜醜的?好像mr徐的介面和我的不一樣呢,怎麼設定的呢?首先,讓我們來設定工具條。ubuntu預設2條工具條,讓我們來把他設定成和windows下一樣的吧。先讓我們在上面的工具條的空白的地方,選擇刪除面板。然後,讓我們在底下的面板...
XML新手入門
ibm的xml教程 xml是什麼?xml,或稱為可擴充套件標記語言 extensible markup language 是一種您可以用來建立自己的標記的標記語言。它由全球資訊網協會 w3c 建立,用來克服 html 即超文字標記語言 hypertext markup language 它是所有網頁...
PLD FPGA新手入門
來自 http www.fpga.com.cn pld是可程式設計邏輯器件 programable logic device 的簡稱,fpga是現場可程式設計門陣列 field programable gate array 的簡稱,兩者的功能基本相同,只是實現原理略有不同,所以我們有時可以忽略這兩者...