• 沒有找到結果。

1.   簡介

1.3   S ERVICE - ORIENTED ARCHITECTURE

到底什麼是 service-oriented architecture (SOA)呢?SOA 是一個架構模型,我們常 聴到 information technology (IT)產業的架構演進,由 1980 年代的主機(mainframe) 架構,到 1990 年代的主從式(client server)架構,到 1999 年時是 network centric 架構,而到 2004 年時已複雜到所謂的 service-oriented architecture 架構(SOA,服 務導向架構) 。其實大多數的人對於 SOA 都有一些迷思,SOA 並不是最近才有

7

的概念,早在多年之前,就有資訊部門公司成功地利用 SOA 的架構,來建構與 運行應用程式,當時 XML 與 web services 都還沒提出呢。SOA 並不是一種技術,

它是一種建構與組織的方法。從資訊技術層面而言,一個執行學校或企業業務的 應用程式稱為一個獨立的「邏輯單位」,而對學校或企業營運層面而言則可稱為 一項「服務」,在企業的整體運算環境中就存在著多個「獨立邏輯/業務服務」,

且需要對其進行妥善設計、開發、佈建、管理等,也因此需要採行服務導向架構

(SOA)。要將 SOA 的概念得以發揮,程式設計師的想法必須有所改變。要以「持 續累積服務」的觀念與角度來開發應用程式,即便這麼做在短時間內看不到顯著 好處,程式師還是必須跳脫、超越過往對應用程式的想法,改以「既有服務可否 再運用?」或者是「能否沿用他人曾經開發過的服務再建構?」的觀點來面對程 式開發。SOA 主張「程式開發技術」與「程式建構方法」的交替並用,以類似傳 訊溝通的作法,將數個所需的「服務」進行連結,以此來實現一個新的應用程式,

而非「從頭開發」。當用戶的需求有改變的時候,新的應用程式只要透過「傳訊 微調」即可實現,而非「重新撰寫」。SOA 不只是在程式開發上面帶來新的想法,

也給管理上面帶來更便利的管理模式。打破以往的觀念,非是以應用程式個體為 角度來進行管理,而是直接將過往程式師開發出的程式視為「服務」來管理。而 對「服務」間的「互動傳訊」進行分析,SOA 便可讓程式設計部門的主管瞭解何 時該執行哪個業務邏輯,以及為何要執行,如此資訊管理者與分析師便可對服務 程序進行最佳化調適。SOA 服務導向架構是一種新興的系統架構模型,組合的元

8

素通常包括:軟體元件、服務及流程三個部份。例如:當學校或企業面對外部要 求時,流程負責定義外部要求的處理步驟;服務包括特定步驟的所有程式元件,

而軟體元件則負責執行工作的程式。SOA 已成為現今軟體發展的重要技術,透過

SOA 讓異質系統整合變得容易,程式再使用度也提高。不必自行開發或擁有所有 程式元件,發展者可以視其需要組合網路上最好的服務。不受限於特定廠商的產 品功能或是平台,達到真正的開放性(openness)。從分散式元件架構到 SOA 概念 上,SOA 如同物件導向、軟體元件等軟體技術一般,運用小的零組件組合成應用 系統。但 SOA 強調的是如何將彼此關係鬆散的應用系統功能元件在網路上發行、

組合及使用。SOA 具有下列技術特性:

1. 分散式架構 (distributed)-SOA 的組成元件是由許多分散在網路上的系統 組合而來,可能是區域網路,也可能是來自廣域網路。例如網站服務技術

(web services) 就是運作 HTTP 來相互連結的 SOA。如此的作法,也使得 網站服務技術很快的就成為所有支援網際網路的系統平台均能使用的技 術。

2. 關係鬆散的界面 (loosely coupled)-傳統的系統主要是將應用系統功能需 求切割成相互關聯的小零組件:模組、物件或元件,發展者要花費極大的 心力了解零組件是如何設計及使 用,以確保不會違反零組件連接關係限 制。如此一來,若要以不同零組件替換原始設計,就成為一件困難的事。

SOA 的作法是以界面標準來組合系統,只要符合界面要求,零組件可以任

9

意替換,大幅提高系統變更的彈性度。

3. 依據開放的標準 (open standard)-使用開放標準是 SOA 的核心特色,過 去的軟體元件平台如 CORBA、DCOM、RMI、J2EE 採用專屬協定作為元 件連結的規範,使得不同平台的元件無法相通。SOA 則著重於標準與互動 性,將可避免不同平台 (.NET web services 與 Java web services) 開發程式 間相互整合的困擾。

4. 以流程角度出發 (process centric)-在建構系統時,首先了解特定工作的流 程要求,並將其切割成服務界面(包括輸入與輸出資料格式),如此其他的 發展者就可以依據服務界面開發 (或選擇) 合適的元件來完成工作。

因此 SOA 的實作,就是將所有程式邏輯及服務內容全部包裹在服務內部,並實 作一個標準的介面與外部作溝通,這種做法跟傳統的元件導向做法非常類似,唯 一的差別是介面定義的方式、資料格式、與溝通管道必須是產業標準 (HTTP、

XML、SOAP 等)。 也就是說只要能實作出這樣的介面,不論介面後面是什麼,

都可使成為 SOA。

相關文件