面向服務的體系結構(SOA)——(1)目標與核心概念

什麼是SOA

經常聽到人們拿OOPSOA一塊兒來講事,諸如SOA是否能夠代替面向對象(OOP)或者二者比哪一個更加有優點?直接回答有難度舉個例子可能顯得答案更容易理解。小孩子問你該認真寫做業呢?仍是高考的時候報理科呢?摸不到頭腦吧,根本就毫無心義的風牛馬不相及的問題。(確切的說OOPSOA仍是有一些關聯的,就像好好學習能夠在高考的時候報理科是同樣的。)java

面向服務的體系結構(Service Oriented Architecture)指的是一個系統的架構,他的研究領域是大型分佈式系統的「架構」範式。而OOP指的是程序具體開發過程當中的「編程」範式。再通俗一點說就是在一個具體的軟件內咱們談論OOP,可是在討論軟件與軟件,系統與系統的關係的時候咱們會藉助SOA的理念幫助咱們處理他們(指各個系統)之間的關係。最後要說的是除非你只負責編碼,不然這兩個你都須要去好好理解一下。數據庫

爲何提出SOA

「並不是最強壯或最聰慧的種族,而是最能應變的種族得以生存。」——達爾文《物種起源》編程

想必上面的話可能會讓讀者爲之一震,不由要問軟件設計(或者說大型分佈式軟件設計)和《進化論》有什麼關係?其實他們是同樣的,每個物種都有本身的生命週期,「物競天擇,適者生存」;軟件也是如此,每款軟件也都有本身的生命週期,能知足用戶的要求,能和周圍的環境(其餘軟件)和平相處那該軟件的生命週期天然就會合理的延長。如今的年代已經不是生命伊始,單物種存在,不考慮其餘生物存在的時候了。一樣的,如今的企業不管從資金仍是時間上考慮開發一套面面俱到的軟件也是不可能的,最可能發生的就是舊系統依在新系統層出不窮,新舊交織、互幫互助(偶爾的打架也是正常的)。咱們要作的就是協調新舊系統的關係,這個協調的過程就是利用SOA解決問題的過程。架構

核心理念

支持異質(異構)

不要奢望企業中的每一個系統都是java平臺的,不要奢望企業中的每一個系統都運行在Window平臺上,不要奢望企業中的數據庫都是結構化的……隨着時間的流逝老版本的系統依在(裏面的數據是無價的,別跟我說能夠從新開發一套新系統,而後把舊系統的數據導出來,這就至關於讓一個環境的某個物種短期內從新進化,夢同樣幼稚的想法!)新系統層出不窮,SOA要作的就是在這些異質(異構)的系統之上保證他們的「和平相處」。分佈式

支持變化

SOA毫不是一次性的事件,隨着企業的發展要在系統環境的變化中產生出具備本身風格的SOA,此次整合了新舊系統興許不就的未來,一次公司的收購就會迎來新的一輪SOA過程。學習

幾個核心的概念

服務:指每一個模塊或者說每一個系統。每一個服務能夠儘可能的獨立提供某一個功能的實現。編碼

高互操做性:和「企業應用集成」(EAI)概念相似,保證異質的系統能夠彼此相互提供服務。spa

鬆耦合:目的是保證整個系統的靈活性和可伸縮性。設計

上面的提出的三個概念對於異質的大型分佈式系統(不是一次性開發出來的)來講簡直就像一個夢,怎麼樣去實現呢?也許SOA爲咱們提供了找到解決方法的方向,請注意只是一個方向,不要奢望從SOA哪裏得到什麼具體可實施的方案。仍是開篇那句話SOA僅僅是一個「架構」範式而已,具體的操做還須要在實踐中去摸索總結。orm

相關文章
相關標籤/搜索