分散式物件淺介
前言:
早期的電腦運算環境以單機為主,也就是集資料、運算、表現於一台電腦上。隨著電子商務的風行,商業組織對於運算服務的需求急速上升。
此時的運算複雜度,絕非單機運算環境所能負荷,加上風險控管、永續服務、備援機制的提出,系統開始出現階層式發展 – 將各種功能分散至多台電腦運算,逐漸成為現行電子商務之主流。
階層式運作如何實做出來?很重要的一個因素就是「分散式物件」,底下我們將簡介分散式物件基礎技術:
(一)RPC(Remote Procedure Call)遠端程式呼叫:
我們知道一支程式與函數的運作主要在記憶體中運行,單機環境下傳遞引數是一件容易的事情, 但如果牽涉到兩種作業系統時,是一件頭疼的事情,因為不同作業系統對於記憶體定址的定義是不同的,更遑論不同的記憶體之下如何共用某支函數。
RPC出現,解決了這種頭疼的問題,他的主要功能就是呼叫internet上其他電腦內函數,並將其模擬成同一記憶體下運作。
RPC吸收了不同作業系統間操作環境與字元碼的差異,所以每台電腦都能像使用自家記憶體之函數一樣,存取其他電腦之函數。
目前CORBA的ORB、Microsoft的DCOM以及JAVA的JavaRMI技術,均使用到RPC的機制。
(二)主從架構:
一般而言,主從架構的主要階層元件有三:
① 表現層:負責資料出入輸出以及呈現
② 資料層:負責處理資料以及資料庫存取
③ 業務邏輯層:負責運算處理,定義各種業務的函數運算
各種型態的主從架構,都包含了以上三種階層元件,再去加以變化
下列是不同的主從架構介紹
- 二層式:
最初最簡單的主從架構,表現層歸在用戶端;資料層放置於資料伺服器端;業務邏輯層亦存在於用戶端中,主要放至於主從雙方互動時。
優點是:網路上的分散處理較容易達成;缺點:負載過於集中伺服器,而且工作邏輯部份擴充不容易,較難處理複雜運算,另外一旦發生故障,全體服務將延宕。
- 三層式:
從二層式架構中,獨立將邏輯層抽出自成一層。
表現層涵蓋在用戶端(瀏覽器)以及web伺服器(JSP PHP ASP);邏輯層獨立置於應用伺服器中;資料層獨立放置於Database 伺服器。
優點:軟體開發與維護成本較低,安全性較高。缺點:硬體與軟體結構更趨向複雜。
- 多層式:
三層式架構為主幹,只是邏輯層的應用伺服器可以依靠功能以及負載無限擴充下去(例如:銷貨管理系統、庫存管理系統、結算系統等…)。
缺點是最終軟體與硬體環境變得異常複雜龐大,各應用系統間的通訊變得非常困難。為了解決此問題,就需要將各系統服務元件物件化,以實現分散處理。
(三)分散式物件:
因為封裝、繼承、多載的技術,使得分散式物件具有高度位置透通性、移動透通性,所以很適合用來搭配多層式應用模型運作。
目前開發軟體已逐漸出現高度分工化趨勢,許多高度的功能都已經被廠商開發完成並製成元件出售供應,開發人員便能以較低成本開發出企業的某項業務專用系統。而這些軟體也具有高度再使用性,甚至可以分割、重構。
另一方面,每當公司實體業務發生變化需要修改軟體時,因為獨立運作且低耦合性緣故,維護人員可以輕易修改這些元件以符合新業務需求,而且因為封裝的性質,除非動到使用介面,否則使用者完全不會感受到軟體修改過。
(四)XML文件忠實傳遞資料:
XML問世前,不同作業系統若要透過網路傳遞文件或資訊,必須大費周章定義資料規範,不但彈性小而且資料正確傳遞傳遞的困難性非常高。
XML透過DOM的parse機制,可以輕易的傳遞各伺服器需要的資料,只要遵循規範,XML可以高度擴張其文件定義。
DOM是一種解析器,它可以將XML資料內容加以解析並產生程式語言能夠操作的物件。就是因為有這種解析功能,XML可以自由地往來於各種不同作業系統與應用程式之間,幫助分散式物件確實達成透通性的要求。
結語:
分散式物件是Web Services中很重要的一種架構,認識分散式物件,對於我們開發高度複雜系統或軟體都有很大的幫助。接下來我將陸續介紹web services的一些技術大家認識。