1.SOA并非純粹的技術(shù)性方法
如果得以成功執(zhí)行,服務(wù)導(dǎo)向架構(gòu)(SOA)并非只是一個技術(shù)性架構(gòu),理解這一點是非常重要。SOA范例旨在于對商業(yè)流程進(jìn)行建模,這些商業(yè)流程并不能總是得到技術(shù)組件的直接支持。最終,服務(wù)可能由技術(shù)組件執(zhí)行,但是商業(yè)流程本身要比支持它們的這些服務(wù)重要得多。
作為一種技術(shù),SOA是一個工具,雖然這種技術(shù)本身沒有提供直接的價值,但是與EJB或者.NET組件相比,SOA是一種更為廉價的代碼行服務(wù)開發(fā)方式。另外,SOA應(yīng)被當(dāng)作是其它利益的實現(xiàn)者,比如改進(jìn)更廣泛的再利用,提高對商業(yè)流程的響應(yīng)性以及與使商業(yè)流程保持更好協(xié)調(diào)性。
2.SOA不一定意味著網(wǎng)絡(luò)服務(wù)
很多技術(shù)人員對SOA存在這樣一種誤解,認(rèn)為SOA意味著必需使用網(wǎng)絡(luò)服務(wù)。雖然網(wǎng)絡(luò)服務(wù)可作為SOA策略的一部分,但它并不是必需的部分。服務(wù)的定義可以基于除HTTP以外的其它標(biāo)準(zhǔn)。和具體的實現(xiàn)技術(shù)相比,關(guān)注商業(yè)流程和服務(wù)的需求更為重要。通常,服務(wù)的環(huán)境將有助于決定其執(zhí)行方式。
例如,對于包含了關(guān)鍵商業(yè)事務(wù)的服務(wù)而言,使用網(wǎng)絡(luò)服務(wù)是不利的,因為我們無法通過SOAP/HTTP協(xié)議來保證交易。而且,很多服務(wù)可能需要異步操作,在這種情況下,基于隊列和通道的消息系統(tǒng)可能是進(jìn)行提供服務(wù)的最佳方式。當(dāng)然,有效負(fù)載和界面依然可以使用XML來定義。
3.可以使用現(xiàn)有架構(gòu)建立SOA
很多組織對于SOA可以使用現(xiàn)行架構(gòu)來建立感到非常驚訝,例如,.NET和J2EE平臺都可為網(wǎng)絡(luò)服務(wù)開發(fā)、XML解析與生成,以及與MSMQ和JMS這類消息系統(tǒng)進(jìn)行通信提供支持。
SOA堆棧常常缺乏流程管理層或自動化層面。不過,許多公司現(xiàn)在已經(jīng)在企業(yè)應(yīng)用集成 (EAI)工具上進(jìn)行了投資,很多EAI工具能夠提供流程自動化和管理層功能,它們可以從現(xiàn)有的應(yīng)用程序或在.NET和J2EE平臺上建立的應(yīng)用程序中對服務(wù)進(jìn)行訪問。
4.SOA是一種(從組件、對象等)進(jìn)化而來的方法
服務(wù)導(dǎo)向架構(gòu)并不是一種全新的解決方案;相反,SOA是技術(shù)與架構(gòu)的自然進(jìn)化。系統(tǒng)架構(gòu)一直在不斷進(jìn)步,與商業(yè)保持高度一致。系統(tǒng)設(shè)計師與商家很早就認(rèn)識到將技術(shù)與商業(yè)流程相協(xié)調(diào)的重要性,包括充分應(yīng)用并合理化技術(shù)資源,以及為商業(yè)提供更好的支持。
SOA也在一定程度上源于早已有之的企業(yè)架構(gòu)理論。企業(yè)架構(gòu)對技術(shù)進(jìn)行評估,但是更重要的是,它關(guān)注整個企業(yè)和全部的商業(yè)流程并提供了做出技術(shù)決策的背景信息。SOA工具則融合了互聯(lián)網(wǎng)技術(shù),如HTTP和XML,以及綜合技術(shù),如消息總線、轉(zhuǎn)譯技術(shù)和連接技術(shù)。
5.流程自動化是SOA的關(guān)鍵優(yōu)勢
許多組織和技術(shù)專家錯誤地關(guān)注服務(wù)架構(gòu)內(nèi)的服務(wù)實現(xiàn)與交付,不幸的是,他們沒有抓住重點,SOA的真正價值體現(xiàn)在它是一個商業(yè)自動化工具。最終,軟件和系統(tǒng)將會提高商業(yè)或組織的效率,這可以根據(jù)組織執(zhí)行的活動或者流程來定義。因此SOA不應(yīng)將焦點放在服務(wù)上,而應(yīng)放在流程以及流程的改進(jìn)上。
當(dāng)然,我們也需要服務(wù)為流程提供支持。但是對于提高效率和改進(jìn)流程的目標(biāo)而言,它們是次要的,服務(wù)本身的價值有限。
6.SOA架構(gòu)可能高度復(fù)雜
從某一角度看,SOA架構(gòu)可以相當(dāng)簡單。例如,開發(fā)一個商業(yè)流程并確定所需的服務(wù),這種要求就合理而直接。但是,要在數(shù)據(jù)和服務(wù)之間進(jìn)行平衡,并實現(xiàn)有意義的目標(biāo)則要復(fù)雜得多。
例如,假設(shè)有這樣一種情況:用戶使用訂單服務(wù)在系統(tǒng)中下訂單。這是相當(dāng)簡單的操作。但是如果您希望將訂單上的數(shù)據(jù)和來自其它服務(wù)的數(shù)據(jù)關(guān)聯(lián)起來呢?如果所有的服務(wù)共享同一個數(shù)據(jù)源,這時您可以跳過服務(wù)層,并生成報告。但是,如果一些數(shù)據(jù)屬于本地服務(wù),一些數(shù)據(jù)屬于原有的主機(jī)系統(tǒng),并且另外一些數(shù)據(jù)屬于商業(yè)應(yīng)用程序(比如SAP),將這些數(shù)據(jù)集成在一起將會特別復(fù)雜。
7.SOA需要深入了解商業(yè)數(shù)據(jù)
因為SOA關(guān)注于商業(yè)流程,因此理解這些與流程密切相關(guān)的數(shù)據(jù)至關(guān)重要。例如,一個訂單流程會包含很多重要的數(shù)據(jù)項,比如訂單、客戶、運輸信息、發(fā)票、付款和收據(jù);更重要的是必須以一種標(biāo)準(zhǔn)的方式來記錄這些數(shù)據(jù),從而使流程中的每項服務(wù)都能以同樣的方式理解這些數(shù)據(jù)。
對于現(xiàn)在擁有信息架構(gòu)的組織而言,這并不是一個大問題。但如果大型組織沒有信息架構(gòu)或者信息架構(gòu)支持有限,這一問題會導(dǎo)致實施過程中的長時間中斷。因為大型企業(yè)通常擁有的數(shù)據(jù)多種多樣,所以一般建議他們采用進(jìn)化的方式來定義信息架構(gòu),即與“大爆炸”方式相反的方法。這意味著不必花費四年的時間來定義數(shù)據(jù)模型,而只需要在開發(fā)服務(wù)過程中花費少量時間來定義與那些服務(wù)相關(guān)的數(shù)據(jù)。這樣,在執(zhí)行每項服務(wù)或者流程時,就可以發(fā)展相關(guān)的信息架構(gòu)來包含必需的數(shù)據(jù)項。
8.服務(wù)可簡單可復(fù)合
定義服務(wù)可能是一個艱巨的任務(wù)。在某些情況下,我們很清楚需要哪些服務(wù);很多時候,服務(wù)相當(dāng)簡單。例如一個查找客戶的服務(wù),可能需要使用一些標(biāo)準(zhǔn)來查找用戶并為服務(wù)的使用者提供標(biāo)準(zhǔn)化的客戶記錄。
然而,服務(wù)也可以復(fù)合形式存在。這意味著“超級服務(wù)”可以提供一個標(biāo)準(zhǔn)的界面,就像我們剛才查找客戶的服務(wù)所提供的那樣。在前面的例子中,暗指所有的客戶信息都存儲在同一個資料庫中,所以很容易進(jìn)行查找。但如果一些客戶資料存放在大型主機(jī)中,一部分存放在SAP中,一部分存放在其它應(yīng)用程序中,而另外一部分存放在Oracle數(shù)據(jù)庫中呢?讓我們假定在每一種系統(tǒng)上已經(jīng)建立了查找服務(wù)的界面。換句話說,我們擁有在大型主機(jī)、SAP、其他的應(yīng)用程序和Oracle數(shù)據(jù)庫上查找客戶的服務(wù)。我們新的查找客戶的服務(wù)可以使用所有這些現(xiàn)有的服務(wù)來查找客戶,F(xiàn)在,因為我們的服務(wù)要調(diào)用其它服務(wù),它變成一個復(fù)合式的服務(wù)。當(dāng)一個自動化流程模型自己成為一項服務(wù)時,也會建立復(fù)合式服務(wù)。
9.SOA的自動化可能有很多層面
自動化可以發(fā)生在不同的層面,這是服務(wù)架構(gòu)經(jīng)常被忽視的一個特點。很多SOA架構(gòu)的錯誤在于只看到某一個層面的自動化,然而,在一個SOA解決方案中,自動化至少可以應(yīng)用到兩個關(guān)鍵領(lǐng)域。
第一個也是最明顯領(lǐng)域的是商業(yè)流程層,在設(shè)計流程的時候,其中的步驟已經(jīng)進(jìn)行了連接并形成自動化。因為這些流程通常是基于日常商業(yè)活動,往往與人類的交互活動有關(guān)。在人類交互流程中實現(xiàn)自動化是一個重要的自動化層面。
另外一個重要的自動化層面是沒有人參與的系統(tǒng)交互層,過去幾年來,集成工具已經(jīng)應(yīng)用到這一領(lǐng)域。通過對系統(tǒng)間任務(wù)進(jìn)行自動化,往往可以提高流程的總體效率。
在這些層面上使用不同的工具也是很重要,應(yīng)該對人類交互、程序或系統(tǒng)間的交互區(qū)別考慮,從而采取不同的策略。
10.服務(wù)應(yīng)當(dāng)遵循相同的界面標(biāo)準(zhǔn)(包括協(xié)議和數(shù)據(jù))
使用標(biāo)準(zhǔn)化的方法進(jìn)行通訊對于服務(wù)而言非常重要。在SOA世界中,通訊由兩個組件構(gòu)成。一個是服務(wù)進(jìn)行通信的網(wǎng)絡(luò)協(xié)議,就好比是人們每天使用的通訊媒介一樣,例如,如果您想和老板通訊,最好搞清楚老板喜歡接電話還是電子郵件。
第二個組件是通訊的數(shù)據(jù)或者語言,一旦您同意將HTTP或者JMS作為通訊機(jī)制,就等于確定了您交流的語言,例如,您的老板說法語而您說英語,可能就會造成通訊困難。在服務(wù)領(lǐng)域,通常使用XML作為語言,但這并沒有提供足夠的信息。必需對服務(wù)需要的數(shù)據(jù)進(jìn)行清晰定義并達(dá)成一致,這樣服務(wù)提供商與服務(wù)用戶就能進(jìn)行有效的通訊。
11.可以將服務(wù)外包
服務(wù)的另外一個優(yōu)點就是它們不必作為整體組件購買,不必在內(nèi)部進(jìn)行管理,也不必從頭進(jìn)行開發(fā)。相反,可以將服務(wù)外包。這意味著在您需要一項服務(wù)向政府部門提交法規(guī)遵從文件時,您不必自己建立這項服務(wù)。各類公司為幾乎每個產(chǎn)業(yè)部門提供各種服務(wù)。利用服務(wù)外包,您可以將主要精力放在與最重要的SOA策略——流程——上面。
外包方式的一個不足之處在于,如果您的競爭對手使用了同樣的服務(wù),您可能會喪失一些競爭優(yōu)勢。
另外一個需要考慮的問題是性能,這依賴于很多因素,主要包括網(wǎng)絡(luò)連接性、可用性和反應(yīng)時間。采用外部網(wǎng)絡(luò)的服務(wù)可能會使您商業(yè)流程的性能降級。
12.服務(wù)可以在現(xiàn)有的系統(tǒng)和軟件基礎(chǔ)上建立
許多組織誤認(rèn)為SOA方式?jīng)]有考慮到原有系統(tǒng),如大型主機(jī)應(yīng)用程序。實際上,SOA的一個最強(qiáng)大的價值就在于它允許組織重新利用大型主機(jī)和其它原有資產(chǎn),這一點尤其重要,因為核心商業(yè)邏輯和核心商業(yè)數(shù)據(jù)通常保存在私有的原有系統(tǒng)中。通過服務(wù)來訪問核心商業(yè)邏輯和數(shù)據(jù),可以立即在自動化流程模型中重新利用這些資產(chǎn)。
當(dāng)然,大型主機(jī)并不是唯一的原有數(shù)據(jù)源。微型計算機(jī)系統(tǒng),如AS/400、VAX和HP3000等等,都可以以各種方式提供服務(wù)。很多工具都可以幫助與這些所有權(quán)系統(tǒng)進(jìn)行通訊,并將它們的信息作為標(biāo)準(zhǔn)化的服務(wù)來傳遞。
13.性能是SOA系統(tǒng)的關(guān)鍵
盡管SOA為一個組織提供了很多利益,包括協(xié)調(diào)技術(shù)與商業(yè),增強(qiáng)靈活性等;它與性能有著密切的關(guān)系。因為在典型的SOA環(huán)境中,應(yīng)用程序往往被高度細(xì)分,而程序之間的數(shù)據(jù)關(guān)聯(lián)也很緩慢,在決策支持和報告系統(tǒng)中特別需要考慮這一點,以往這些系統(tǒng)只依賴少量數(shù)據(jù)源。
性能最大化的關(guān)鍵在于了解應(yīng)用程序和系統(tǒng)性能在何處對于商業(yè)最重要。構(gòu)建一個高性能的系統(tǒng)來支持一個并不需要它的商業(yè)流程是無益的。一旦確定關(guān)鍵流程,您只需要在有必要的地方改進(jìn)并提升性能就行了。
14.SOA以四個組件為基礎(chǔ)
一個成功的SOA交付計劃有四個組件。第一個組件是定義商業(yè)流程,需要哪些服務(wù)來支持它們,以及哪些數(shù)據(jù)與它們相關(guān)。這是關(guān)于SOA的商業(yè)分析。
第二個組件是SOA的架構(gòu)和模式,這是一組描述如何定義與實現(xiàn)服務(wù)的規(guī)則,指定通用的交付與使用模式,并制訂開發(fā)服務(wù)需要遵循的原則與標(biāo)準(zhǔn)。
第三個組件是SOA的基礎(chǔ)結(jié)構(gòu),這包括網(wǎng)絡(luò)、服務(wù)器、存儲設(shè)備、消息工具、整合工具以及流程自動化工具等等,它們支持服務(wù)與商業(yè)流程的開發(fā)與交付。
第四個組件是SOA的開發(fā)計劃。該計劃確定了服務(wù)開發(fā)與流程實現(xiàn)的先后次序,并且指導(dǎo)形成新服務(wù)與新流程項目。
15.建立SOA可能相當(dāng)麻煩
盡管SOA是一個進(jìn)化性技術(shù),盡管在SOA領(lǐng)域已經(jīng)具備相當(dāng)豐富的知識儲備,但由于各種原因,建立SOA仍然相當(dāng)麻煩。最主要的原因在于SOA和其它變革一樣:它需要大量的溝通與社會化,使組織為變革做好準(zhǔn)備。
在克服了變革的困難之后,還可能有其它技術(shù)性問題。這些問題包括建立適當(dāng)?shù)姆⻊?wù)交付和使用模式、培訓(xùn)技術(shù)開發(fā)團(tuán)隊、以及為支持SOA開發(fā)模式對組織進(jìn)行的可能的結(jié)構(gòu)變化。盡管SOA的技術(shù)組件可以在隔離的環(huán)境下進(jìn)行測試和驗證,SOA依然是一個全企業(yè)參與的方法,因而需要付出更多的努力來規(guī)劃服務(wù)架構(gòu)的控制與管理。
核心關(guān)注:拓步ERP系統(tǒng)平臺是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊涵了豐富的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ōu)點
本文網(wǎng)址:http://www.oesoe.com/html/consultation/10839324380.html