- 論壇徽章:
- 0
|
SOA 的路究竟要怎么走 ?
大家都知道SOA是面向服務(wù)的體系結(jié)構(gòu),是構(gòu)造分布式系統(tǒng)的應(yīng)用程序的方法。它將應(yīng)用程序功能作為服務(wù)傳送給最終用戶或者其他服務(wù)。它可解決企業(yè)跨平臺(tái)的問(wèn)題,是企業(yè)跨平臺(tái)系統(tǒng)的技術(shù)解決方案。有了SOA以後,最原始的三層結(jié)構(gòu)發(fā)生了變化。很多人在原先的業(yè)務(wù)邏輯層之上再加一層叫服務(wù)層,或者是把業(yè)務(wù)邏輯層命名了服務(wù)層,其目的就是為了提供給UI或者是其它系統(tǒng)的不再是一個(gè)類庫(kù)而是一個(gè)服務(wù),這個(gè)服務(wù)可以跨平臺(tái)使用。這樣的一個(gè)出發(fā)點(diǎn)是相當(dāng)好的,也正因?yàn)檫@樣一個(gè)出發(fā)點(diǎn),很多人喜歡上了SOA,開(kāi)始SOA的艱辛旅途了。
開(kāi)始SOA,很多人或公司首先就會(huì)想到需要規(guī)范目前公司的開(kāi)發(fā)方法。把原先本來(lái)是業(yè)務(wù)邏輯層的類的方法包裝成一個(gè)個(gè)服務(wù)。于是乎在公司的的開(kāi)發(fā)標(biāo)準(zhǔn)上就多了這樣一條規(guī)范。盡量使用WCF或Web Service編寫(xiě)系統(tǒng)服務(wù)提供給其它用戶或UI層使用。這就樣每個(gè)程序員都開(kāi)始編寫(xiě)服務(wù)了,為公司的SOA架構(gòu)早點(diǎn)實(shí)現(xiàn)而努力。公司為實(shí)現(xiàn)這樣一個(gè)目標(biāo)也早在2年前就開(kāi)始著手一些符合SOA架構(gòu)理念的中間件(或者說(shuō)ESB 產(chǎn)品)?墒堑侥壳盀橹,這些項(xiàng)目都停滯不前。當(dāng)然這里面有各種各樣的原因,如:成熟的真正符合SOA架構(gòu)理念的產(chǎn)品實(shí)在太少 ,真正有SOA架構(gòu)理念實(shí)踐經(jīng)驗(yàn)的人也太少了。沒(méi)有經(jīng)驗(yàn),所以公司考慮各種風(fēng)險(xiǎn)問(wèn)題就不敢盲目實(shí)施。這些都不是我今天要分享的問(wèn)題。我要分享的問(wèn)題是:很多人或公司在準(zhǔn)備應(yīng)用SOA之前沒(méi)有作出充分的評(píng)估和對(duì)以前開(kāi)發(fā)中面臨的問(wèn)題作出充分的觀注。
以前在沒(méi)有考慮SOA時(shí),編寫(xiě)起服務(wù)來(lái)很輕松,覺(jué)得無(wú)非就是對(duì)以前編寫(xiě)的業(yè)務(wù)邏輯層的方法進(jìn)行包裝而已。最近在做一個(gè)項(xiàng)目的分析和架構(gòu)設(shè)計(jì)的時(shí)候,由于此系統(tǒng)涉及的關(guān)聯(lián)系統(tǒng)之多,所以想也沒(méi)想太多,按原來(lái)的方法編寫(xiě)服務(wù)就是了?墒堑胶髞(lái)當(dāng)我快完成系統(tǒng)設(shè)計(jì)的時(shí)候。我才發(fā)現(xiàn)很多服的功能被重復(fù)設(shè)計(jì),有的該拆分的沒(méi)有拆分,但不該拆分的被拆分了。從而也導(dǎo)致了很多地方使用了服務(wù)調(diào)用服務(wù),并可能是嵌套了幾層,特別是一些本來(lái)就需要調(diào)用外部服務(wù)的功能 。很多人也可能說(shuō)這樣做也沒(méi)有什么問(wèn)題。有些人認(rèn)為服務(wù)應(yīng)該拆分的越小越好,這樣才能達(dá)到重用的可能。有些人又覺(jué)得嵌套服務(wù)這樣的做法會(huì)造成嚴(yán)重的系統(tǒng)效能問(wèn)題,實(shí)踐也確實(shí)證明了這一點(diǎn)。
這就是所謂的服務(wù)粒度問(wèn)題,服務(wù)粒度究竟要怎么來(lái)把握?同時(shí)各服務(wù)之間又怎么實(shí)現(xiàn)事務(wù)機(jī)制,分布式事務(wù)真是可行嗎。如果是,為什麼如此多人不推薦使用。解決事務(wù)問(wèn)題還有其它解決方案嗎?針對(duì)這些問(wèn)題大家又有什么建設(shè)性的建議呢,在SOA實(shí)施之前,我們要準(zhǔn)備些什么呢?在這里希望大家一起探討,謝謝! |
|