對SEDA,SOA 與 P2P 的哲學分析

SOA,WEB SERVICE, CORBA, EJB, 工做流,面向對象的局部性與面向服務的全局性和鬆耦合性。編程

鬆耦合性的須要來源於對業務變動的靈活性需求。網絡

軟件系統應用之初,人們認爲軟件使得電腦能夠象人同樣工做。因而把全部的權力都給了它。後來在使用過程當中,才逐漸發現,軟件其實並不能勝任全部的工做。它也許真的能夠擁有智能,但卻永遠也不可能取代人的決策者地位。這一點是由兩個重要因素決定的:架構

一,軟件能接收與理解的信息是有限的。基於有限的信息,很難作出正確的決策。一個不能作出正確決策的行爲主體,固然很難贏得信任。因此說,信任是第一個問題;性能

二,一個在能力上不能被信任的人,固然就不能擔當過重大的責任。因此,當軟件最終被發現是個白癡的時候,人們要求收回它作決定的權力。設計

更重要的是,即便軟件有朝一日真的能擁有人的智慧,咱們仍然須要掌握必定程度上的決策權。由於這個緣由,工做流被從以往被認爲是萬能的軟件系統中抽取出來,以令人們從新掌握對業務的控制能力。對象

在SPRING裏面,也有個類似的東西叫作「控制反轉」即IOC。與工做流的產生背景同樣。人們喜歡權力。事件

在編程方法中,要求儘可能將定義與實現分離。這樣的目的是爲了提升系統的應變能力。這種方法其實也是最初的SOA思想來源。內存

與軟件的可變性類似的一個概念爲可擴展性。資源

可擴展性與可變性意思是不一樣的。可變性是針對現有系統而言的,意指現有系統應該能夠隨時被改變以提供新的業務層服務。而可擴展性是指,系統的設計應該使新元素的加入變得很是簡單。原型

可是,SOA做爲一種最抽象的軟件架構方法,真的能夠作到徹底意義上的「可變性」嗎?

答案的關鍵在於「可變性」究竟是怎麼被定義的。

軟件是虛擬現實。這由軟件自己的物質性所決定。從人類的認識論來說,現實世界是由空間與時間組成的。之因此這樣說,是由於對宇宙自己來講,存在的只有物質以及物質的運動而已。全部別的東西,都是詞語而已。但如今不是討論哲學自己的時候,如今咱們須要作的是借用哲學的手段來解決哲學之外的問題,因此才提一下。回到正題。空間這個詞的產生是由於咱們看到物質。時間的產生則是由於咱們看到物質的變化。而物質的變化本質上又是物質運動的體現。這就是帶有被動性的惟物認識論基礎。

當咱們開始用軟件來虛擬現實的時候,帶有被動性的惟物認識論開始阻撓咱們的思惟,因而轉而採用惟心主義的思惟來考慮軟件問題。這裏提一下,事實上,到今天爲止,小到西方科學的產生和發展,幾乎所有是惟心主義的功勞。大到整我的類所有文明成果,也都是在惟心主義思惟方式下的成果。甚至,惟物主義自己其實也是惟心主義的一部分。不過,這個是題外話,暫時不表。

主動性的惟心認識論認爲人是主宰。人們經過行爲改變這個世界。

其中的「行爲」與「世界」,反映到軟件系統,在OO的思想中,是對象與方法;在SO的思想中,就是狀態與服務。

這樣,終於又能夠回到主題了。前面提到,軟件做爲一個獨立的行爲體,基本上已經被證實沒有決策的能力,因此決策權必然要被回收。事實上,這在軟件學的不少領域中正在發生。控制反轉與工做流的思想應用,都是控制權回收思想的體現。

在研究方向上,三者的研究方向是不一樣的。

SOA研究的是如何在基於服務的基礎上構建大規模或複雜應用。由於服務原本就是一個抽象的概念,這使得SOA具備

SEDA研究的是在本地(本機)如何利用有限的時間資源(處理器週期)與空間資源(內存)最大限度地發揮系統本領。

與SEDA名字類似但差異甚大的另外一個概念是EDA,意爲事件驅動架構,是工做流思想的原型。它在往工做流的方向發展的同時,往另外一個方向發展成了SEDA,也即它最終走向兩個徹底不一樣的方向。一個是高性能,一個是業務層流程管理。

P2P研究的是如何在一個分佈的環境中進行計算工做或者內容分發等工做。P2P的工做環境是整個網絡,這跟SEDA的工做環境沒有任何交集。

但使用了SOA的架構之後,SEDA能夠經過SOA使用外部的計算資源。而P2P能夠爲非集中的計算或內容分發過程提供近乎完美的性能與用戶體驗。

相關文章
相關標籤/搜索