作者:up方方土,一個(gè)混在金融行業(yè)的屌絲程序員某饰,喜歡代碼儒恋,喜歡咖啡,喜歡旅行
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
技術(shù)圈就好比娛樂(lè)圈 黔漂,在大平云移四大天王的年代诫尽,有誰(shuí)還會(huì)想起曾經(jīng)呼風(fēng)喚雨的一哥SOA?也許SOA也許就此隕落了~也許再過(guò)兩年炬守,有人再看到SOA牧嫉,會(huì)很憤怒地罵道,哪個(gè)屌絲程序員又寫(xiě)錯(cuò)別字,明明是SAO酣藻,寫(xiě)成SOA2芮ⅰ!辽剧!
所以衣洁,作為SOA的粉絲,寫(xiě)篇文章來(lái)紀(jì)念一下這個(gè)昔日的明星抖仅,來(lái)闡述一下我對(duì)他的理解坊夫,來(lái)回顧一下我是不是真的懂他
SOA到底是什么?
百度百科說(shuō):面向服務(wù)的體系結(jié)構(gòu)是一個(gè)組件模型撤卢,它將應(yīng)用程序的不同功能單元(稱(chēng)為服務(wù))通過(guò)這些服務(wù)之間定義良好的接口和契約聯(lián)系起來(lái)环凿。接口是采用中立的方式進(jìn)行定義的,它應(yīng)該獨(dú)立于實(shí)現(xiàn)服務(wù)的硬件平臺(tái)放吩、操作系統(tǒng)和編程語(yǔ)言智听。這使得構(gòu)建在各種各樣的系統(tǒng)中的服務(wù)可以使用一種統(tǒng)一和通用的方式進(jìn)行交互。
維基百科說(shuō):面向服務(wù)的體系結(jié)構(gòu)(Service-oriented architecture)是構(gòu)造分布式計(jì)算的應(yīng)用程序的方法渡紫。它將應(yīng)用程序功能作為服務(wù)發(fā)送給最終用戶或者其他服務(wù)到推。
它采用開(kāi)放標(biāo)準(zhǔn)、與軟件資源進(jìn)行交互并采用表示的標(biāo)準(zhǔn)方式惕澎。
軟件廠商說(shuō):SOA就是一個(gè)概念莉测,幫我們賣(mài)出去了好多產(chǎn)品和服務(wù);企業(yè)用戶說(shuō):SOA就是一個(gè)標(biāo)簽唧喉,讓我們的系統(tǒng)更高更大更上捣卤;架構(gòu)師說(shuō):SOA深不可測(cè),可大可小八孝,可長(zhǎng)可短董朝;程序員說(shuō):丫的,SOA就是一騙子干跛,哪些WSDL子姜,SOAP不就是個(gè)遠(yuǎn)程調(diào)用嗎?
SOA到底是什么楼入?是一種商業(yè)手段哥捕?是一種設(shè)計(jì)方法?是一種開(kāi)發(fā)技術(shù)浅辙?都是扭弧、也都不是阎姥。我理解的SOA的定義應(yīng)該是可變的记舆,在一個(gè)企業(yè)的上下文環(huán)境下,來(lái)定義SOA的具體含義呼巴。說(shuō)白了:企業(yè)遇到了怎么樣的問(wèn)題泽腮,用SOA的哪些方法來(lái)解決了這些問(wèn)題御蒲,便是SOA在這個(gè)企業(yè)上下文環(huán)境下的定義了;
那么對(duì)于一個(gè)系統(tǒng)的架構(gòu)而言诊赊,SOA可以從哪些方面去切入呢厚满?
一、系統(tǒng)集成:站在系統(tǒng)的角度碧磅,目的:將原先系統(tǒng)間調(diào)用的網(wǎng)狀結(jié)構(gòu)轉(zhuǎn)變?yōu)樾切谓Y(jié)構(gòu)碘箍;
這是SOA的第一步,解決的是企業(yè)系統(tǒng)間的通信問(wèn)題鲸郊,將原先散亂丰榴、無(wú)規(guī)劃的系統(tǒng)間的網(wǎng)狀結(jié)構(gòu),梳理成規(guī)整秆撮、可治理的系統(tǒng)間星形結(jié)構(gòu)四濒。在這一步,往往會(huì)需要引入一些產(chǎn)品职辨,比如企業(yè)服務(wù)總線(ESB)盗蟆、會(huì)引入一些服務(wù)的技術(shù)規(guī)范,會(huì)引入一些服務(wù)的管理規(guī)則等舒裤。完成了這一步喳资,解決的一個(gè)核心問(wèn)題是【有序】。
二腾供、系統(tǒng)的服務(wù)化:站在功能的角度骨饿,將業(yè)務(wù)邏輯抽象成可復(fù)用、可組裝的服務(wù)台腥,通過(guò)服務(wù)的編排宏赘,實(shí)現(xiàn)業(yè)務(wù)流程的快速再生,目的:將原先固化的業(yè)務(wù)功能轉(zhuǎn)變?yōu)橥ㄓ玫臉I(yè)務(wù)服務(wù)黎侈,實(shí)現(xiàn)業(yè)務(wù)邏輯的快速?gòu)?fù)用察署;
這是SOA的第二步,解決的是提升企業(yè)系統(tǒng)生產(chǎn)力的問(wèn)題峻汉,將原先定制贴汪、功能化的代碼邏輯,轉(zhuǎn)變成在通用休吠、服務(wù)化的業(yè)務(wù)邏輯扳埂。這一步,往往會(huì)需要引入一些產(chǎn)品瘤礁,比如流程引擎(BPM)阳懂、會(huì)引入一些服務(wù)的設(shè)計(jì)方法,會(huì)引入一些服務(wù)的編排原則等。完成了這一步岩调,解決的一個(gè)核心問(wèn)題是【復(fù)用】巷燥。
三、業(yè)務(wù)的服務(wù)化:站在企業(yè)的角度号枕,將企業(yè)職能目抽象成可復(fù)用缰揪、可組裝的服務(wù):將原先職能化的企業(yè)架構(gòu)轉(zhuǎn)變?yōu)榉?wù)化的企業(yè)架構(gòu),進(jìn)一步提升企業(yè)的對(duì)外服務(wù)能力葱淳;
這是SOA的第三步钝腺,SOA第一步解決的是系統(tǒng)間調(diào)用的問(wèn)題,SOA第二步解決的是系統(tǒng)功能復(fù)用的問(wèn)題赞厕,這兩步都是從技術(shù)層面拍屑,從系統(tǒng)角度來(lái)對(duì)于現(xiàn)在面臨的問(wèn)題進(jìn)行剖析和處理。而SOA的第三步坑傅,則是從業(yè)務(wù)層面僵驰,從職能角度來(lái)剖析和處理所面臨的問(wèn)題。一項(xiàng)業(yè)務(wù)的組成唁毒,包括了【業(yè)務(wù)規(guī)則+業(yè)務(wù)流程+業(yè)務(wù)系統(tǒng)+業(yè)務(wù)人員】蒜茴,用SOA的服務(wù)封裝理念,將這樣一個(gè)業(yè)務(wù)單元封裝成一項(xiàng)服務(wù)浆西,而整個(gè)企業(yè)是通過(guò)這些服務(wù)的編排實(shí)現(xiàn)業(yè)務(wù)價(jià)值粉私。完成了這一步,解決的一個(gè)核心問(wèn)題是【高效】近零。
還是要重申一點(diǎn):雖然SOA是一劑良藥诺核,但是一定要對(duì)癥下藥,用藥過(guò)量也會(huì)帶來(lái)副作用久信。