自面向服務架構(SOA)演進發展以來,SOA就一直被拿來跟Web模型“RESTful”接口進行對比。盡管它們之間的差異已經討論了很多,但大多數的討論都是晦澀難懂的,企業仍然報告說自己困惑于究竟哪一種模式相對而言更好。
大多數應用架構師都意識到,如果應用合適,開發實踐反映了雙方的目標和好處的話,在某些情況下,將表述性狀態轉移(REST)與SOA結合起來是有可能且有優勢的。最大的問題是目標是否要開發一個自始至終的RESTful接口,同時滿足大部分SOA目標,或者混合使用REST和SOA。
SOA、REST分解
SOA是為了促進靈活、敏捷應用開發而采取的一種架構,該架構通過在一般的工作流管理模型中常見組件來實現。這些組件之間是一種松耦合的關系,意味著組件是通過發布/訂購登記流程來定位的,而且使用了一種常見的對象訪問機制來鏈接(一般是是SOAP),使用了某種定義語言(WSDL)來描述將用戶和提供商連接在一起的特性和接口。該模型支持識別、安全和恢復流程的標準機制,在支持復雜的業務關鍵應用方面擁有豐富的功能。
RESTful模式是為了簡化用戶通過瀏覽器訪問而設置的。盡管這種超文本標記語言(HTML)先看后點的瀏覽方式已經擴展為允許在程序元素之間,而不僅僅是與用戶之間進行更為結構化的信息交換(擴展標記語言XML),其基本的接口是一樣的;組件仍是以統一資源定位(URL)的方式表示,并采用與互聯網兼容的域名解析系統(DNS)進行解碼。
組件連接不僅僅是松散而已,如果用戶本身在連接中的選擇不是可視化的話這種關聯根本就不存在。RESTful很容易開發和部署,它是輕量的,托管和維護的成本也很低廉,很適合典型的在線應用。
創建REST/SOA共生應用的典型方法是在SOA應用前端添加一個Web服務器,這會令SOA應用為互聯網做好準備,并讓它們可以為瀏覽器/瘦客戶端所訪問。雖然SOA組合應用靈活性很高時這很好,但是瘦客戶端、移動及Web訪問重要性的不斷增強,促使某些架構師開始尋求在應用之中運用更多的RESTful概念。
RESTful SOA的關鍵
對于應用架構師來說,創建RESTful SOA的關鍵是定義可表示流程元素/資源的對象。在REST中,每一個對象都是通過URL來表示的,對象用戶負責將狀態信息打包進每一條消息內,以便對象的處理總是無狀態的。太復雜的對象,如那些表示多階段流程的,按照RESTful的形式編碼會很困難,其使用將會需要轉換設計模式或者其他的適配機制。
RESTful SOA的第二大問題是組合管理及流程綁定。企業對正規的(基于SOAP)SOA最大的反對聲之一便是,這種等級的發現和綁定靈活性不足以適應復雜性。他們報告說大多數應用的組件是相對靜態的,在組件動態引入的地方,它們往往表示的是由另一應用暴露的功能或者甚至是另一用戶通過API來暴露的功能—具有諷刺意味的是,那往往是RESTful的!
提供基于目錄的組件發現過程給RESTful接口是有可能的,如果這種水平的動態性有必要的話,但是此類需求也許意味著在應用前端使用RESTful、在后端采用SOA/SOAP的混合型方案的合理性。
解決問題
有些應用架構師也許擔心RESTful接口的安全問題。從嚴格意義上來說,雙方均可以采用相同的加密選項,但是在SOA/SOAP中,開發者對安全有著更為顯式的控制。然而,RESTful應用可授權安全連接,開發者就可以確保做到同樣的控制了。有關是否采取安全措施的審計問題可通過測試對接口的不安全的HTTP調用來確保這種模式下的連接是不被允許的。
協調和工作流線程有時候也會成為通過RESTful接口實現的SOA的考慮問題。當然,許多消息總線協議都會支持RESTful接口的使用(具體支持視消息總線和選定開發語言而定)。可能構成挑戰的是,在組件失敗導致事務失敗時確保撤銷過程可實現。
REST中沒有明確中介流程,也沒有具體機制來確保已成功完成的給定的RESTful流程是否可逆,進行逆向時所需的信息要少很多。映射進RESTful消息,將其進行跨階段傳遞以便可回溯失敗,這個過程的建立相對容易,但是可能有必要開發這一能力而不是僅僅利用標準工具或能力。
今天很大一部分的“服務”實現都是基于REST而非SOA/SOAP的,但是做關鍵任務應用時企業已經形成對正規SOA架構的信任。對于安全/身份管理、可組合性及合規性絕對關鍵的應用,想對其進行RESTful化的再造可能會很困難。不過對于一般的企業來說,真正的問題是目前的應用組件是否需要SOAP或者可以采用RESTful的方式訪問。
如果能用上REST,就有可能提供更快的部署方式,與客戶、供應商以及移動員工的集成也更加簡單,還可以為員工支持提供更加靈活的GUI調整。雖然連其支持者也承認REST并非完美解決方案,但是對于許多SOA應用來說,這是最好的解決方案。
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://www.lukmueng.com/
本文標題:為何要結合SOA和Restful接口?