這篇文章主要介紹的是物件導向oo,面向方面aop,面向服務soa這三個要素在架構設計中的位置與作用。
架構設計有三個維度,或者說是我們在考慮架構時需要思考的三個方向。分別為:物件導向、面向方面、面向服務。這三個維度可以看作是正交的,但不同維度會互相印證,互相支撐。
整個架構的示意圖如下所示:
物件導向技術最初是從物件導向的程式設計開始的,它的出現以60年代simula語言為標誌,並在smalltalk語言的完善和標準化過程中得到更多的擴充套件和對以前的思想的重新註解。80年代中後期,物件導向程式設計逐漸成熟,被計算機界理解和接受,人們又開始進一步考慮物件導向的開發問題。直到現在,物件導向已經成為一種非常流行的程式設計方式,以及軟體設計的架構。
物件導向提出有三個主要目標:重用性、靈活性和擴充套件性,強調物件的「抽象」、「封裝」、「繼承」、「多型」。它能讓人們以更加接近於現實世界的方式來思考程式,這點可以說是物件導向最大的進步。
在oo思想的運用上,業界出現了很多好的經驗與技巧,從而湧現出大量的設計模式。可以說物件導向是系統分析與設計時的乙個很重要的方面。
面向方面最初**於hook技術,本質上就是滿足擴充套件的需求,可以在程式中自由擴充套件功能。
面向方面不僅僅是一門程式設計技術,同樣也是一種架構設計的思路。如果說oo是縱向地分析、切割整個系統,那麼可以認為aop是橫向地對系統作切片。簡單地理解,oo與aop分別從兩個不同的角度給我們提供了分析系統的思路。面向方面可以彌補物件導向的缺陷,兩種方式有機的結合在一起可以更加有效地分析系統。
這兩種思維方式都沒有問題,結合起來的話分析問題解決問題會更好。物件導向與面向方面也同樣如此,都能對應到人類認識自然的思維方式上。不過中國人理解aop可能會有不同的感悟——我寫的文章《讀易[13]·閒談中醫與aop》有簡單的說明。
面向服務可以說是最近炒得比較火的概念了。包括現在提到的saas——software as a service,軟體即服務。準確說來,面向服務不僅僅是軟體行業的概念。這個要從社會的產業結構說起。
社會產業總共分為三個,第一產業農業,第二產業工業,第三產業服務業。最早社會的主要產業是第一產業農業,將近有幾萬年的歷史。十八世紀下半葉在英國開始的工業革命,對人們的生活產生了根本性的影響,社會的主要產業成了第二產業工業。
現在仍然屬於工業時代,或者有人說的「後工業時代」。而在後工業時代,社會的經濟體制必定要向第三產業服務業逐漸轉型。面向服務其實是社會經濟體制重心的一種遷移。
還是說回到軟體行業,社會的主要產業將轉變成服務業,自然軟體行業也會出現對應的變化,那就是這裡提到的面向服務。面向服務今後會影響到軟體的交付模式,會對整個軟體行業的體制產生影響。
而說到架構層面,面向服務是系統發布功能的一種方式。並且基於這種方式下不同的系統之間能有效地通訊、協作。常見的實現技術就是web service。
軟體架構設計的三個維度:物件導向、面向方面、面向服務。
最年長的乙個維度就是物件導向,發展了好幾十年,也是相對來說比較成熟的乙個維度。它解決的問題是系統內部結構的設計。
面向方面的思想提出來能夠彌補物件導向的缺陷。物件導向的方式不能實現橫切關注點的分離,而面向方面正是為了解決這個問題。面向方面與物件導向一樣都是解決系統內部結構的設計。
這三個維度並不是絕對孤立的,它們之間會互相影響、制約。我們在分析架構的時候需要同時考慮到這三個維度的問題。這樣有助於我們設計出更加優秀的架構。
trackback:
架構設計的三個維度
這篇文章主要介紹的是物件導向oo,面向方面aop,面向服務soa這三個要素在架構設計中的位置與作用。架構設計有三個維度,或者說是我們在考慮架構時需要思考的三個方向。分別為 物件導向 面向方面 面向服務。這三個維度可以看作是正交的,但不同維度會互相印證,互相支撐。整個架構的示意圖如下所示 物件導向技術...
軟體架構設計的三個維度
軟體架構設計的三個維度 架構設計是乙個非常大的話題,不管寫幾篇文章,接觸到的始終只是冰山一角,更多的是實踐中去體會。這篇文章主要介紹物件導向oo 面向方面aop和面向服務soa這三個要素在架構設計中的位置與作用。架構設計有三個維度,或者說是我們在考慮架構時需要思考三個方向。這三個維度分別為物件導向 ...
移動應用的三個維度
如果問大家網際網路是幾維的?不知道大家的答案是什麼。如果再問web 2.0是幾維的?移動應用是幾維的?大家會不會以為我瘋了?這是我最近在思考的問題。好了,說到移動應用,又增加了乙個維度,第三維度是什麼呢?對,朋友們可能已經猜到了,這就是空間軸。哈,似乎又繞回去了,不是,我們不必將空間分為長寬高,而是...