<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 軟件架構(gòu)設(shè)計的三個維度

          軟件架構(gòu)設(shè)計的三個維度

          作者: 時間:2011-06-27 來源:網(wǎng)絡(luò) 收藏

          是一個非常大的話題,不管寫幾篇文章,接觸到的始終只是冰山一角,更多的是實踐中去體會。這篇文章主要介紹面向?qū)ο驩O、面向方面AOP和面向服務(wù)SOA這要素在中的位置與作用。

          本文引用地址:http://www.ex-cimer.com/article/150561.htm

            ,或者說是我們在考慮架構(gòu)時需要思考方向。

            這三個分別為面向?qū)ο蟆⒚嫦蚍矫?、面向服?wù)。

            這三個可以看作是正交的,但不同維度會互相印證,互相支撐,整個架構(gòu)的示意圖如圖所示。

            

            圖:架構(gòu)三維度結(jié)構(gòu)圖

            面向?qū)ο?/p>

            面向?qū)ο蠹夹g(shù)最初是從面向?qū)ο蟮某绦蛟O(shè)計開始的,它的出現(xiàn)以上世紀60年代Simula語言為標志,并在Smalltalk語言的完善和標準化過程中得到更多的擴展和對以前思想的重新注解。

            上世紀80年代中后期,面向?qū)ο蟪绦蛟O(shè)計逐漸成熟,被計算機界理解和接受,人們又開始進一步考慮面向?qū)ο蟮拈_發(fā)問題。直到現(xiàn)在,面向?qū)ο笠呀?jīng)成為一種非常流行的編程方式,以及設(shè)計的架構(gòu)。

            面向?qū)ο筇岢鲇腥齻€主要目標:重用性、靈活性和擴展性,強調(diào)對象的“抽象”、“封裝”、“繼承”和“多態(tài)”。它能讓人們以更加接近于現(xiàn)實世界的方式來思考程序,這點可以說是面向?qū)ο笞畲蟮倪M步。

            在OO思想的運用上,業(yè)界出現(xiàn)了很多好的經(jīng)驗與技巧,從而涌現(xiàn)出大量的設(shè)計模式,可以說面向?qū)ο笫窍到y(tǒng)分析與設(shè)計時的一個很重要的方面。面向方面

            面向方面最初來源于hook技術(shù),本質(zhì)上就是滿足擴展的需求,可以在程序中自由擴展功能。

            面向方面不僅僅是一門編程技術(shù),同樣也是一種架構(gòu)設(shè)計的思路。如果說OO是縱向地分析、切割整個系統(tǒng),那么可以認為AOP是橫向地對系統(tǒng)作切片。

            簡單地理解,OO與AOP分別從兩個不同的角度給我們提供了分析系統(tǒng)的思路。面向方面可以彌補面向?qū)ο蟮娜毕荩瑑煞N方式有機的結(jié)合在一起,可以更加有效地對系統(tǒng)進行分析。

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

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

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

            這兩種思維方式都沒有問題,如果結(jié)合起來分析問題,解決問題會更好。面向?qū)ο笈c面向方面也同樣如此,都能對應(yīng)到人類認識自然的思維方式上。

            面向服務(wù)

            面向服務(wù)可以說是最近炒得比較火熱的概念。包括現(xiàn)在提到的SaaS(Software as a service),即服務(wù)。準確而言,面向服務(wù)不僅僅是行業(yè)的概念,這個要從社會的產(chǎn)業(yè)結(jié)構(gòu)說起。

            社會產(chǎn)業(yè)總共分為三個,第一產(chǎn)業(yè)農(nóng)業(yè),第二產(chǎn)業(yè)工業(yè),第三產(chǎn)業(yè)服務(wù)業(yè)。最早社會的主要產(chǎn)業(yè)是第一產(chǎn)業(yè)農(nóng)業(yè),將近有幾萬年的歷史。

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

            現(xiàn)在仍然屬于工業(yè)時代,或者有人說的“后工業(yè)時代”。而在后工業(yè)時代,社會的經(jīng)濟體制必定要向第三產(chǎn)業(yè)服務(wù)業(yè)逐漸轉(zhuǎn)型。面向服務(wù)其實是社會經(jīng)濟體制重心的一種遷移。

            還是說回到軟件行業(yè),社會的主要產(chǎn)業(yè)將轉(zhuǎn)變成服務(wù)業(yè),自然軟件行業(yè)也會出現(xiàn)對應(yīng)的變化,那就是這里提到的面向服務(wù)。面向服務(wù)今后會影響到軟件的交付模式,會對整個軟件行業(yè)的體制產(chǎn)生影響。

            而說到架構(gòu)層面,面向服務(wù)是系統(tǒng)發(fā)布功能的一種方式。并且基于這種方式下不同的系統(tǒng)之間能有效地通信、協(xié)作。常見的實現(xiàn)技術(shù)就是Web Service。

            軟件全局觀

            軟件架構(gòu)設(shè)計的三個維度:面向?qū)ο蟆⒚嫦蚍矫?、面向服?wù)。

            最年長的一個維度就是面向?qū)ο?,發(fā)展了好幾十年,也是相對而言比較成熟的一個維度。它解決的問題是系統(tǒng)內(nèi)部結(jié)構(gòu)的設(shè)計。

            面向方面思想的提出能夠彌補面向?qū)ο蟮娜毕?。面向?qū)ο蟮姆绞讲荒軐崿F(xiàn)橫切關(guān)注點的分離,而面向方面正是為了解決這個問題。面向方面與面向?qū)ο笠粯佣际墙鉀Q系統(tǒng)內(nèi)部結(jié)構(gòu)的設(shè)計。

            面向服務(wù)更多的是涉及到系統(tǒng)的外部,簡單地說就是發(fā)布功能。它并不關(guān)注系統(tǒng)內(nèi)部結(jié)構(gòu)的實現(xiàn),所以說面向服務(wù)與面向?qū)ο蠡蛘呙嫦蚍矫娌⒉粵_突。

            這三個維度并不是絕對孤立的,它們之間會互相影響、制約,相互發(fā)展的。我們在分析架構(gòu)的時候需要同時考慮到這三個維度的問題,這樣有助于我們設(shè)計出更加優(yōu)秀的架構(gòu)。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();