第2章 面向服務(wù)體系架構(gòu)(SOA)技術(shù)概要
2.1 SOA概述
SOA的思想最初由Gartner公司提出,由于當(dāng)時的技術(shù)水平和市場環(huán)境尚不具備真正實(shí)施SOA的條件,因此當(dāng)時SOA并未引起人們的廣泛關(guān)注,SOA在當(dāng)時沉寂了一段時間。伴隨著互聯(lián)網(wǎng)的浪潮,越來越多的企業(yè)將業(yè)務(wù)轉(zhuǎn)移到互聯(lián)網(wǎng)領(lǐng)域,帶動了電子商務(wù)的蓬勃發(fā)展。為了能夠?qū)⒐镜臉I(yè)務(wù)打包成獨(dú)立的、具有很強(qiáng)伸縮性的基于互聯(lián)網(wǎng)的服務(wù),人們提出了Web服務(wù)的概念,這可以說是SOA的發(fā)端。
SOA不是一種語言,也不是一種具體的技術(shù)而是一種軟件系統(tǒng)架構(gòu)。SOA是一種架構(gòu)模型,它可以根據(jù)需求通過網(wǎng)絡(luò)對松散耦合的粗粒度應(yīng)用組件進(jìn)行分布式部署、組合和使用。SOA解決方案由可重用的服務(wù)組成,帶有簡單、精確定義的接口用于服務(wù)間的通訊,SOA提供了一種操作,通過這種操作,可以集成現(xiàn)有的各種應(yīng)用程序,不論它們采用什么平臺或語言開發(fā)。SOA的實(shí)質(zhì)就是為企業(yè)核心業(yè)務(wù)提供端到端的服務(wù),并且已成為現(xiàn)階段企業(yè)信息化發(fā)展的方向。
2.1.1 SOA的基本概念
SOA是英文Service.OrientedArchitecture,即面向服務(wù)架構(gòu)的縮寫。當(dāng)于“架構(gòu)”結(jié)合時,面向服務(wù)便具有了一個技術(shù)內(nèi)涵。SOA是一個術(shù)語,代表一個模型,其中的自動化邏輯可分解為小的、不同的邏輯單元。這些單元組成一個較大的業(yè)務(wù)自動化邏輯片段,并可以對這些單元進(jìn)行獨(dú)立地分布式部署。
SOA的關(guān)鍵是“服務(wù)”的概念,W3C將服務(wù)定義為:服務(wù)提供者完成一組工作,為服務(wù)使用者交付所需的最終結(jié)果。最終結(jié)果通常會使使用者的狀態(tài)發(fā)生變化,但也可能使提供者的狀態(tài)改變,或者雙方都產(chǎn)生變化。
Service-architecture.com將SOA定義為:本質(zhì)上是服務(wù)的集合,服務(wù)間彼此通信,這種通信可能是簡單的數(shù)據(jù)傳送,也可能是兩個或更多的服務(wù)協(xié)調(diào)進(jìn)行某些活動。服務(wù)間需要某些方法進(jìn)行連接。所謂服務(wù)就是精確定義、封裝完善、獨(dú)立于其他服務(wù)所處環(huán)境和狀態(tài)的函數(shù)。
Looselycoupled.corn將SOA定義為:按需連接資源的系統(tǒng),在SOA中,資源被作為可通過標(biāo)準(zhǔn)方式訪問的獨(dú)立服務(wù),提供給網(wǎng)絡(luò)中的其他成員。與傳統(tǒng)的系統(tǒng)結(jié)構(gòu)相比,Gartner則將SOA描述為:客戶端朋艮務(wù)器的軟件設(shè)計方法,一項(xiàng)應(yīng)用由軟件服務(wù)和軟件服務(wù)使用者組成,SOA與大多數(shù)通用的客戶端/服務(wù)器模型的不同之處,在于它著重強(qiáng)調(diào)軟件組件的松散耦合,并使用獨(dú)立的標(biāo)準(zhǔn)接口。
雖然不同的廠商、IT組織或個人對SOA有著不同的理解,因此本人認(rèn)為可以從上述廠家與個人的定義中總結(jié)出SoA的特性定義:SOA是一個開放的、可擴(kuò)展的、聯(lián)邦的、可組合的架構(gòu),促進(jìn)面向服務(wù)并由自治的、高質(zhì)量的、廠商多樣化的、互操作性的、可發(fā)現(xiàn)的和潛在可復(fù)用的服務(wù)組成,利用Web服務(wù)來實(shí)現(xiàn)。
2.1.2 SOA的基本特征
SOA是一種粗粒度、松耦合的服務(wù)架構(gòu),其服務(wù)之間通過簡單的、精確定義的接口進(jìn)行相互通訊,不涉及底層編程接口和通訊模式。這種結(jié)構(gòu)主要具備如下幾個特征:
(1)服務(wù)的封裝:將服務(wù)封裝成用于業(yè)務(wù)流程的可重用組件的應(yīng)用程序函數(shù)。它提供信息或簡化業(yè)務(wù)數(shù)據(jù)從一個有效的、一致的狀態(tài)向另一個狀態(tài)的轉(zhuǎn)變,封裝隱藏了復(fù)雜性。
(2)服務(wù)的重用:服務(wù)的可重用性設(shè)計顯著地降低了成本。為了實(shí)現(xiàn)可重用性,服務(wù)只工作在特定處理過程的上下文中,獨(dú)立于底層實(shí)現(xiàn)和客戶需求的變更。
(3)服務(wù)的互操作:在SOA中,通過服務(wù)之間既定的通信協(xié)議進(jìn)行互操作。
(4)服務(wù)是自治的功能實(shí)體:服務(wù)是由組件組成的組合模塊,是自包含和模塊化的,SOA非常強(qiáng)調(diào)架構(gòu)中提供服務(wù)的功能實(shí)體的完全獨(dú)立自主的能力。
(5)服務(wù)之間的松耦合度:服務(wù)請求者到服務(wù)提供者的綁定與服務(wù)之間應(yīng)該是松耦合的。這就意味著,服務(wù)請求者不知道提供者實(shí)現(xiàn)的技術(shù)細(xì)節(jié),比如程序設(shè)計語言、部署平臺。服務(wù)請求者往往通過消息調(diào)用操作,請求消息和響應(yīng),而不是通過使用API和文件格式。
2.1.3 SOA的體系結(jié)構(gòu)
SOA體系結(jié)構(gòu)中的基本元素是服務(wù),服務(wù)是一個自包含的、無狀態(tài)的實(shí)體,可以由多個組件組成。它通過事先定義的界面響應(yīng)服務(wù)請求。它也可以執(zhí)行諸如編輯和處理事務(wù)等離散性任務(wù)。服務(wù)本身并不依賴于其他函數(shù)和過程的狀態(tài)。用什么技術(shù)實(shí)現(xiàn)服務(wù),并不在其定義中加以限制。
SOA體系結(jié)構(gòu)包含:服務(wù)請求者,服務(wù)提供者,服務(wù)注冊,它們的關(guān)系如圖2.1示:
圖2-1 SOA體系結(jié)構(gòu)圖
服務(wù)提供者是一個提供符合契約的服務(wù)的實(shí)體,并將自己的服務(wù)和接口契約發(fā)布到服務(wù)注冊中心。
服務(wù)請求者是一個應(yīng)用程序或一個需要調(diào)用服務(wù)的另一個服務(wù),它發(fā)現(xiàn)并調(diào)用其他的軟件服務(wù)達(dá)到它所需要的服務(wù)功能。
服務(wù)代理者是服務(wù)的儲存庫,產(chǎn)生由服務(wù)提供者發(fā)布的接口,可以使服務(wù)請求者查找服務(wù)提供者的接口。
2.2基于Web服務(wù)的SOA應(yīng)用基本協(xié)議與技術(shù)
SOA本質(zhì)上依賴Web服務(wù),Web服務(wù)是一種部署在Web上的組件、對象,是可以通過網(wǎng)絡(luò)訪問的應(yīng)用程序接口。Web服務(wù)定義了一套標(biāo)準(zhǔn)的互操作規(guī)范,根據(jù)這個規(guī)范,可以在任何平臺實(shí)現(xiàn)互操作。這一規(guī)范,主要由四個技術(shù)協(xié)議組成:XML,SOAP,UDDI,WSDL。
2.2.1XML協(xié)議
XML是可擴(kuò)展的標(biāo)記語言(Extensible Markup Language)簡稱,XML是目前用來描述數(shù)據(jù)和交換數(shù)據(jù)的一種標(biāo)準(zhǔn),是用結(jié)構(gòu)化的方法存儲數(shù)據(jù)的純文本格式。XML由W3C于1998年2月發(fā)布,XML的最大優(yōu)點(diǎn)是它的數(shù)據(jù)存儲格式不受顯示格式的制約,任何設(shè)備都可以讀取它,因?yàn)樗母袷奖旧砭褪俏谋疚募?/p>
XML的主要特點(diǎn)有:
(1)XML使用Unicode字符集,可生成英文、中文、希臘文或梵文等多種語言。
(2)可將多個來源(包括其他XML文檔和二進(jìn)制文件)匯合進(jìn)一個XML文檔。
(3)可利用DTD或Schema(模式)管理一致性問題。DTD主要用于文檔型文檔,Schema主要用數(shù)據(jù)型文檔。
(4)具有很好的擴(kuò)展性,可定義自己的元素和屬性。
(5)通過XML可從關(guān)系數(shù)據(jù)庫管理系統(tǒng)中提取數(shù)據(jù)到結(jié)構(gòu)化文檔。它還被設(shè)計成可對各種數(shù)據(jù)對象進(jìn)行操作。
(6)XML標(biāo)記不涉及文檔如何顯示,只表示文檔的結(jié)構(gòu)。
XML的文檔結(jié)構(gòu)主要包含兩個部分:文檔序言與文檔體。文檔序言包含指定關(guān)鍵特性和文件數(shù)據(jù)的元數(shù)據(jù),文檔體包含數(shù)據(jù),一個簡單的XML文檔實(shí)例如下所示:
<產(chǎn)品>
<鞋子>
<尺寸>40碼<廣尺寸>
<顏色>黑色</顏色>
<產(chǎn)地>杭州叫產(chǎn)地>
</鞋子>
</產(chǎn)品>
其中是一個聲明,說明了該文檔是XML格式,使用XML的1.0版本和中文字符集標(biāo)準(zhǔn)的編碼方法。指定編碼方法是為了保證每個字符能被對應(yīng)的編碼方式正確的讀取,通常的編碼方式還有UTF-8、UTF-16。在XML中用以標(biāo)記文本的基本構(gòu)件稱為元素,元素由一個開始標(biāo)簽與一個結(jié)束標(biāo)簽組成,在XML的例子中,<產(chǎn)品>與</產(chǎn)品>組成一個根元素,<鞋子>與組成一個子元素。<鞋子>元素包含三個元素,<產(chǎn)品>元素的三個孫元素每個都包含了文本內(nèi)容數(shù)據(jù)。
綜上所述,Web服務(wù)要運(yùn)行,需要使用一種平臺中立的方法來描述數(shù)據(jù)與數(shù)據(jù)交換,XML以標(biāo)準(zhǔn)化的文本格式以一種簡單的方法格式化數(shù)據(jù),成為了Web服務(wù)的技術(shù)基礎(chǔ)。
2.2.2 DISCO協(xié)議
DISCO的全稱是Dis.Co Service(集散服務(wù)系統(tǒng))是一個意圖將分散的服務(wù)資源進(jìn)行有效的整合和管理的平臺。DISCO協(xié)議被用來發(fā)現(xiàn)位于特定域上的Web服務(wù),DISCO協(xié)議的背后推動者是Microsoft,它的工作原理是,為客戶機(jī)提供一個單獨(dú)的位置,以便將企業(yè)中的所有發(fā)布的Web服務(wù)進(jìn)行定位。每個公司都應(yīng)有一個DISCO文件存在Web服務(wù)上,某個客戶機(jī)會檢查這個DISCO文件,并知道為這個公司所發(fā)布的每個Web服務(wù)的WSDL文件進(jìn)行定位。DISCO協(xié)議與UDDI協(xié)議功能上有相似的作用,它們的區(qū)別是,UDDI協(xié)議是定位于Internet上可用的Web服務(wù)的中心倉庫,DISCO協(xié)議不但可以用于動態(tài)發(fā)現(xiàn)Web服務(wù),還可以用于在未知的域上詢問所有可能的Web服務(wù)。
DISCO協(xié)議格式比較簡單,DISCO協(xié)議基本上是一個指向WSDL文件的指針集合。一個具體的DISCO文檔如下示例:
一個發(fā)布的DISCO文檔其實(shí)是一個XML文檔,以元素
2.2.3 UDDI協(xié)議
UDDI的全稱是Universal Description, Discovery, and Integration(通用描述、發(fā)現(xiàn)和集成),由uddi.org進(jìn)行維護(hù)。UDDI規(guī)范一個由Web服務(wù)所構(gòu)成的邏輯上的云狀服務(wù),同時也定義了一種編程接口,這種編程接口提供了描述Web服務(wù)的簡單框架。規(guī)范包括幾份相關(guān)的文檔和一份XML Schema,用來定義基于SOAP的注冊和發(fā)現(xiàn)Web服務(wù)的協(xié)議。
UDDI規(guī)范、XML Schema和UDDI注冊中心集群之間的關(guān)系如圖2-2所描述UDDI注冊中心集群能為Web服務(wù)提供一次注冊,到處發(fā)布的功能。
圖2-2 UUDI關(guān)系圖
UDDI注冊使用的核心信息模型由XML Schema定義,使用XML是因?yàn)樗峁┝似脚_無關(guān)的數(shù)據(jù)描述并很自然的描述了數(shù)據(jù)的層次關(guān)系。選擇XML Schema是因?yàn)樗С重S富的數(shù)據(jù)類型,便捷的描述方式及其按信息模型對數(shù)據(jù)進(jìn)行驗(yàn)證的能力。UDDI XMLSchema定義了四種主要信息類型,它們是技術(shù)人員在需要使用合作伙伴所提供的Web服務(wù)時必須了解的技術(shù)信息。商業(yè)實(shí)體信息、服務(wù)信息、綁定信息和服務(wù)調(diào)用規(guī)范的說明信息。
UUDI有四種主要的數(shù)據(jù)結(jié)構(gòu),它們中每一種代表一個XML元素,它們分別為:
·業(yè)務(wù)信息保存在一個businessEntity元素中。
·服務(wù)信息保存在一個businessService元素中。
·綁定信息保存在一個bingdingTemplate元素中。
·為服務(wù)提供的規(guī)范保存在一個tModels元素中。
這四種數(shù)據(jù)結(jié)構(gòu)都要保持獨(dú)立,因此只能使用唯一的標(biāo)志符或鍵碼來單獨(dú)訪問它們,由UDDI注冊表產(chǎn)生的每一個標(biāo)志符都采用一個通用唯一ID的形式。一個UDDI是一個依照算法產(chǎn)生的十六進(jìn)制字符串,該算法可以確保任何兩個UDDI不相同。
一個UDDI的簡單形式的示例:FCZX1315-1719-2226-ZJ13-WYZJWYFXYJ100N。
基于SOA的中小型企業(yè)業(yè)務(wù)流集成應(yīng)用研究(一)
http://articles.e-works.net.cn/SOA/Article95112.htm
基于SOA的中小型企業(yè)業(yè)務(wù)流集成應(yīng)用研究(二)上
http://articles.e-works.net.cn/SOA/Article95113.htm
基于SOA的中小型企業(yè)業(yè)務(wù)流集成應(yīng)用研究(二)下
http://articles.e-works.net.cn/SOA/Article95114.htm
基于SOA的中小型企業(yè)業(yè)務(wù)流集成應(yīng)用研究(三)上
http://articles.e-works.net.cn/SOA/Article95130.htm
基于SOA的中小型企業(yè)業(yè)務(wù)流集成應(yīng)用研究(三)下
http://articles.e-works.net.cn/SOA/Article95133.htm
基于SOA的中小型企業(yè)業(yè)務(wù)流集成應(yīng)用研究(四)
http://articles.e-works.net.cn/SOA/Article95189.htm
基于SOA的中小型企業(yè)業(yè)務(wù)流集成應(yīng)用研究(五)上
http://articles.e-works.net.cn/SOA/Article95191.htm
基于SOA的中小型企業(yè)業(yè)務(wù)流集成應(yīng)用研究(五)下
http://articles.e-works.net.cn/SOA/Article95221.htm
核心關(guān)注:拓步ERP系統(tǒng)平臺是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://www.oesoe.com/
本文標(biāo)題:基于SOA的中小型企業(yè)業(yè)務(wù)流集成應(yīng)用研究(二)上
本文網(wǎng)址:http://www.oesoe.com/html/support/1112154145.html