軟體架構設計的三個維度)

來源:互聯網
上載者:User

架構設計是一個非常大的話題,不管寫幾篇文章,接觸到的始終只是冰山一角,更多的是實踐中去體會。這篇文章主要介紹物件導向OO、面向方面AOP和面向服務SOA這三個要素在架構設計中的位置與作用。

架構設計有三個維度,或者說是我們在考慮架構時需要思考三個方向。

這三個維度分別為物件導向、面向方面、面向服務。

這三個維度可以看作是正交的,但不同維度會互相印證,互相支撐,整個架構的。

圖:架構三維度結構圖

物件導向

物件導向技術最初是從物件導向的程式設計開始的,它的出現以上世紀60年代Simula語言為標誌,並在Smalltalk語言的完善和標準化過程中得到更多的擴充和對以前思想的重新註解。

上世紀80年代中後期,物件導向程式設計逐漸成熟,被電腦界理解和接受,人們又開始進一步考慮物件導向的開發問題。直到現在,物件導向已經成為一種非常流行的編程方式,以及軟體設計的架構。

物件導向提出有三個主要目標:重用性、靈活性和擴充性,強調對象的“抽象”、“封裝”、“繼承”和“多態”。它能讓人們以更加接近於現實世界的方式來思考程式,這點可以說是物件導向最大的進步。

在OO思想的運用上,業界出現了很多好的經驗與技巧,從而湧現出大量的設計模式,可以說物件導向是系統分析與設計時的一個很重要的方面。

面向方面

面向方面最初來源於hook技術,本質上就是滿足擴充的需求,可以在程式中自由擴充功能。

面向方面不僅僅是一門編程技術,同樣也是一種架構設計的思路。如果說OO是縱向地分析、切割整個系統,那麼可以認為AOP是橫向地對系統作切片。

簡單地理解,OO與AOP分別從兩個不同的角度給我們提供了分析系統的思路。面向方面可以彌補物件導向的缺陷,兩種方式有機的結合在一起,可以更加有效地對系統進行分析。

我們認為OO是接近於人類認識自然的思維方式,但對於東方而言卻並不一定是這樣的。

當西方人看到一個複雜系統的時候,只會有一種思路,就是“分解”,將系統分解成一塊一塊,然後每個部分進行研究。

當東方人看到一個複雜系統的時候,更多地會關注系統中存在的關係,將系統作為一個有機的整體進行研究,這也是東方和西方在事物看法上存在的差異。

這兩種思維方式都沒有問題,如果結合起來分析問題,解決問題會更好。物件導向與面向方面也同樣如此,都能對應到人類認識自然的思維方式上。

面向服務

面向服務可以說是最近炒得比較火熱的概念。包括現在提到的SaaS(Software as a service),軟體即服務。準確而言,面向服務不僅僅是軟體行業的概念,這個要從社會的產業結構說起。

社會產業總共分為三個,第一產業農業,第二產業工業,第三產業服務業。最早社會的主要產業是第一產業農業,將近有幾萬年的曆史。

十八世紀下半葉在英國開始的工業革命,對人們的生活產生了根本性的影響,社會的主要產業成了第二產業工業。

現在仍然屬於工業時代,或者有人說的“後工業時代”。而在後工業時代,社會的經濟體制必定要向第三產業服務業逐漸轉型。面向服務其實是社會經濟體制重心的一種遷移。

還是說回到軟體行業,社會的主要產業將轉變成服務業,自然軟體行業也會出現對應的變化,那就是這裡提到的面向服務。面向服務今後會影響到軟體的交付模式,會對整個軟體行業的體制產生影響。

而說到架構層面,面向服務是系統發布功能的一種方式。並且基於這種方式下不同的系統之間能有效地通訊、協作。常見的實現技術就是Web Service。

軟體全域觀

軟體架構設計的三個維度:物件導向、面向方面、面向服務。

最年長的一個維度就是物件導向,發展了好幾十年,也是相對而言比較成熟的一個維度。它解決的問題是系統內部結構的設計。

面向方面思想的提出能夠彌補物件導向的缺陷。物件導向的方式不能實現橫切關注點的分離,而面向方面正是為瞭解決這個問題。面向方面與物件導向一樣都是解決系統內部結構的設計。

面向服務更多的是涉及到系統的外部,簡單地說就是發布功能。它並不關注系統內部結構的實現,所以說面向服務與物件導向或者面向方面並不衝突。

這三個維度並不是絕對孤立的,它們之間會互相影響、制約,相互發展的。我們在分析架構的時候需要同時考慮到這三個維度問題,這樣有助於我們設計出更加優秀的架構。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.