西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁業(yè)內(nèi)動態(tài) 業(yè)內(nèi)資訊 → 面向服務(wù)的架構(gòu)SOA十誡

面向服務(wù)的架構(gòu)SOA十誡

相關(guān)軟件相關(guān)文章發(fā)表評論 來源:本站整理時間:2010/7/30 17:10:04字體大。A-A+

作者:佚名點(diǎn)擊:131次評論:0次標(biāo)簽: SOA

  • 類型:編程輔助大小:19.3M語言:中文 評分:1.2
  • 標(biāo)簽:
立即下載
4 頁 SOA交易概念
SOA交易概念
數(shù)據(jù)庫世界陌生的東西對與SOA來說卻是再自然不過了。業(yè)務(wù)交易——實(shí)現(xiàn)它的一般是一個流程——就是服務(wù)。為了理解SOA何以能很好支持邏輯一致性需求,理解業(yè)務(wù)交易的需要很重要。業(yè)務(wù)交易由下面元素組成:

廠商給客戶提供信息,客戶據(jù)此可作出采購決定。一般來說,這種信息包括出售商品和服務(wù)的屬性、得到該商品的條件——包括,當(dāng)然,價格——以及可用性。從法律的角度,廠商所描述的這一信息是真實(shí)的。
用戶基于廠商描述的信息下采購訂單。
廠商核實(shí)該采購決定依據(jù)的信息是否仍然適用,如果是,則確認(rèn)該訂單。如果有變化——可能由于產(chǎn)品或服務(wù)已終止,或產(chǎn)品已經(jīng)漲價,也可能是貨物或服務(wù)的規(guī)格已經(jīng)變更——那么需要一些處理來決定到底應(yīng)該如何做:是不管三七二十一繼續(xù)提交訂單,還是通過協(xié)商修改訂單,或者干脆取消訂單。
廠商和客戶雙方履行采購協(xié)議中各項(xiàng)條約。
SOA怎樣維持一致性
SOA通過多種方法維護(hù)業(yè)務(wù)交易的邏輯一致性。第一,所有暗含對前一個狀況改變的通信都要使用能夠保證消息安全交付的協(xié)議來完成。只要廠商或用戶做出某個承諾,為實(shí)現(xiàn)該承諾所要做的動作就應(yīng)該包含這樣的改變。這樣的話,客戶和廠商就不可能對當(dāng)前業(yè)務(wù)狀態(tài)持有不同的看法了。

第二,數(shù)據(jù)庫的邏輯一致性和流程管理系統(tǒng)中處理過程的記錄可以通過兩階段提交協(xié)議來維護(hù)?缍鄠數(shù)據(jù)庫的邏輯一致性通過一連串這樣的兩階段提交維護(hù)。首先讓數(shù)據(jù)庫A和流程管理系統(tǒng)同步,然后流程管理系統(tǒng)再和數(shù)據(jù)庫B同步,以此類推。

第三,從廠商給客戶展示產(chǎn)品到訂單下達(dá)期間,廠商面對的任何改變都可以使用樂觀鎖并發(fā)控制機(jī)制來處理。這種處理方式對SOA來說很自然:判斷是否存在相應(yīng)改動的過程可以完全自動化。因?yàn)镾OA使得數(shù)據(jù)在被用來作決定的同時也可以進(jìn)行訪問,找不到樂觀鎖而需要人工介入的情況幾乎鮮有發(fā)生。

最后,一筆交易的中止——比如說用戶撤銷了訂單,原因可能是用戶沒有能力支付,或者用戶去世了——使用SOA可以相對容易地處理。因?yàn)樵诮灰咨舷挛闹惺褂没虍a(chǎn)生的記錄可以被清晰地識別,所以可以確定需要哪些補(bǔ)償信息用以糾正用戶和廠商的不同認(rèn)知。因?yàn)槟膫數(shù)據(jù)庫更新和該交易有直接關(guān)系是很清楚的,在數(shù)據(jù)庫中的哪些變更需要使用補(bǔ)償交易服務(wù)做回滾也很清楚。假設(shè),交易中止的發(fā)生相對不那么頻繁,使這些活動完全自動化通常是高投入低產(chǎn)出的,但是你的設(shè)計必須要考慮到這些。

請注意業(yè)務(wù)交易的范圍限制在那些為了處理某個服務(wù)請求而直接完成的操作。在SOA中,編排你自己的流程并提供事件通知給他人,是一條守則。如果服務(wù)中止了,那么有必要發(fā)通知用戶這一個變化。至于他們要怎么處理,則完全是他們自己的事。

也請注意,創(chuàng)建用戶服務(wù)請求的內(nèi)容,嚴(yán)格說起來,應(yīng)該在流程處理之前進(jìn)行,而不應(yīng)該作為流程處理的一部分。這真的不是你該做的事:原則上,提供消息的XSD和消息驗(yàn)證服務(wù)給用戶就夠了,讓他決定是從鍵盤錄入數(shù)據(jù)還是從他自己的信息系統(tǒng)以某種方式直接生成數(shù)據(jù)。對消費(fèi)者來說,這并不是——尚未成為——一個可行的方法,但采集數(shù)據(jù)和處理數(shù)據(jù)是兩件獨(dú)立的事情,并使用不同工具在各自的環(huán)境中執(zhí)行這些事情,對于這一點(diǎn)仍然是有效的。同樣是數(shù)據(jù)采集,有很多實(shí)現(xiàn)方式,這取決于用戶的期望以及他們和你溝通的渠道,但不管怎樣都應(yīng)該只有一個服務(wù)去處理這事兒。

7.不要將自己禁錮于模型
數(shù)據(jù)庫只是模型,SOA代表更多
領(lǐng)域模型是領(lǐng)域本身的體現(xiàn),操作領(lǐng)域模型要比直接操作領(lǐng)域更簡單。絕大多數(shù)的數(shù)據(jù)庫都是模型。它們以這樣一種方式代表一些管理的、物理的或者社會的領(lǐng)域:相關(guān)領(lǐng)域的問題都可以通過查詢數(shù)據(jù)庫來得到答案,而存在于領(lǐng)域中所需的行為可以從數(shù)據(jù)庫內(nèi)部得到指示。比如說,通過訪問數(shù)據(jù)庫查詢用戶的地址信息要比跟隨用戶到他家然后抄下他所進(jìn)房子的門牌號要方便的多。而且,在數(shù)據(jù)庫中對記錄進(jìn)行計數(shù)也要比清點(diǎn)一個城市有多少人或倉庫里有多少產(chǎn)品要容易。原則上,提供對這些功能的支持足以確定數(shù)據(jù)庫的數(shù)據(jù)結(jié)構(gòu)。盡管這樣,因?yàn)橐话悴惶赡苁孪染湍苊鞔_所有這些功能,所以我們使用數(shù)據(jù)建模技術(shù)對領(lǐng)域中感興趣的對象進(jìn)行分析,包括對象之間的關(guān)系,以及信息項(xiàng)(它們會告訴我們關(guān)于其自身的一些我們可能想知道的東西)。例如,若數(shù)據(jù)庫和用戶有關(guān),那么每個用戶通常都應(yīng)該存在對應(yīng)的數(shù)據(jù)庫記錄,包括一些數(shù)據(jù)庫使用者感興趣的與用戶相關(guān)的信息。因?yàn)閿?shù)據(jù)模型更多是基于功能上的考慮而不是某些特定數(shù)據(jù)庫的使用,所以將數(shù)據(jù)結(jié)構(gòu)建立在這種模型之上會使數(shù)據(jù)庫能夠更易適應(yīng)各種未預(yù)見的需求。數(shù)據(jù)庫在語義上被結(jié)構(gòu)化了;換句話來講,數(shù)據(jù)庫是根據(jù)其表達(dá)出的意思來構(gòu)造的。

對沒有實(shí)現(xiàn)數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)庫技術(shù)就沒那么方便了。它實(shí)在不能在描述、文本、圖像等方面做很多貢獻(xiàn)。相反,SOA卻能夠很好地處理文檔、記錄,就像可以很好處理那些根據(jù)數(shù)據(jù)模型構(gòu)建的數(shù)據(jù)一樣。SOA允許單個設(shè)計能夠處理語義結(jié)構(gòu)化信息和文檔。盡管如此,由于數(shù)據(jù)庫系統(tǒng)支配了我們的思維模式,所以當(dāng)應(yīng)用SOA時免不了很自然的會堅(jiān)持其局限性。但是在SOA的世界里不存在特殊的理由要去應(yīng)用這種限制,任何理由都不能夠這樣做。