面向对象,面向服务(转)
生活随笔
收集整理的這篇文章主要介紹了
面向对象,面向服务(转)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
面向對象,面向服務 轉自(http://www.cnblogs.com/rib06/archive/2007/05/23/756385.html) ??? 關于這兩個概念之間的聯系、區別,在SOA提出之初就已經討論的很多了,為什么到今天還會有“現在都已經SOA了,還面向對象干嗎?”的論調呢。
??? OO與SOA就不是同一個層次上的概念,提出的目標不同,針對的問題不同,成熟程度更不同。關于SOA的內涵,到現在也還是像“九二共識“一樣,各有各的解讀。IBM,Microsoft,Oracle等各大廠商(或者叫概念炒家)都有自己對SOA的理解、詮釋和解決方案。而在社區中,認為SOA是舊瓶裝新酒,是概念炒作的,有之;將SOA的概念推廣,認為其在軟件中無處不在,甚至Anything is Service的,有之。今年春節時和一個在柏林工大讀碩士的哥們聊天,他在西門子還有份兼職,說到SOA,他說據他了解至少在德國,目前SOA還在天上飄。
??? 我的感覺是,SOA的概念源于產業界,而非學術界,這樣的概念如果要進入學術界必須要非常謹慎。但現在SOA已經不僅在產業界熱炒,而且正在向學術界蔓延。這未必是一個好現象,因為產業界提出的新概念可能是需求牽引,更可能是利益驅動,其學術價值可能非常低。所以我們廣大在校攻讀學位的兄弟們一定要保持清醒的頭腦,至少要明白這個概念為什么提出,目標是什么,摸清其產生的縱向與橫向原因脈絡,不要盲目跟風,更不要把根本不是一個層次上的概念(比如OO)拿來亂攪和。
??? 那么在現在“王子復仇記”般繽紛演繹的SOA大戲臺上,什么才是需要把握的呢?我覺得idior的“四點式SOA”總結的比較好:
1、SOA是松耦合的
2、SOA是基于消息的
3、SOA是用于系統集成的
4、SOA的用武之地就在于構建組合型應用
??? 言簡意賅。特別是第3點,個人覺得道出了目前SOA的應用領域,即用于所謂“煙囪林立”的信息系統的整合,這些“煙囪”高矮粗細越不相同(系統異構性越強),離的越遠(地理分布越廣),那么SOA就越能發揮效力。前幾天wayfarer舉了一個全球酒店預定系統的例子,就很好的說明了這一點,這恐怕可以算是飄在天上的SOA觸到地面的一個腳尖吧。
??? 那么我們再回過頭來看OO。這可不是個新概念了,它從OOL(面向對象的語言)開始,發展成包括概念、原理和原則的完整理論體系。OO是個神奇的東西,它可簡可繁,簡能簡到只用“封裝、繼承、多態”六個字就能表達;繁的話可以讓李建忠用近兩個鐘頭的一整個WebCast也僅僅講了個提綱挈領。近年來隨著敏捷、測試驅動、設計模式、企業應用架構模式等OO的高級主題和方法論逐漸升溫,OO甚至已經升華到了一個哲學思想的高度,它已經滲透到從界面、邏輯到數據的各個層面和從分析、設計到編碼的各個階段,成為目前主流的軟件開發思想與范型。
??? 然而我們應該看到,抽絲剝繭,OO思想中所蘊含的最重要的部分是什么?按照前文的思路,我們應該搞清楚的是OO提出的目標和針對的問題是什么。如果讓我用一句話來概括,那么或許應該是:運用抽象的力量封裝變化,隔離變化,實現復用。軟件的復用是軟件技術發展的目標,把握住這個目標就找到了軟件技術發展的脈絡。OOL的出現從實現層面上為達到這個目標提供了一個強大的武器,后來UML的出現又從分析與設計層面為達到這個目標進一步強化了這個武器。但退一步想想,其實要達到這個目的,沒有OOL,沒有UML一樣也行。我們見過一些C達人(或者叫偏執者)用函數指針模擬繼承和多態,然后說:這個我也能實現!除了對他C語言深厚的功底感到欽佩以外,我沒有其他感覺,期待匯編達人跳出來用ASM模擬一下基于寄存器的繼承和多態,更期待01達人用打孔機模擬……我們不推崇這種倒轉歷史車輪的做法,既然發明了打火機,干嗎還去鉆木取火?我覺得他們的目的無非是為了說明OOL的OO特性對于他們來說沒有什么用,如果硬要用的話,他們用C也能實現。但是這至少說明OO在有些地方并不一定適用。那么既然OO那么厲害,真的還有它起不了作用的地方嗎?
??? 近年來,國內技術社區不斷成長和成熟的一個顯著標志就是關于“語言之爭”的話題越來越少,大家逐漸意識到為“是C語言厲害,還是Java牛逼;是vb.net時髦,還是C#強大”爭的面紅耳赤就像在為“是螺絲刀厲害,還是電鋸厲害”爭論一樣,除了在不經意間(當然也可能是有意的)成了某個商業公司的代言人,為其做了免費宣傳以外,沒有其它任何意義。與之前的技術相比,OO之所以算是一種進步,就在于其提供了更高層的抽象能力,在特定的軟件開發領域內,這種能力非常重要,它能夠讓開發人員更加方便的去封裝變化和隔離變化。注意,我用了“特定的軟件開發領域”,也就是說,并非所有需要編程的地方都需要OO的這種抽象能力,甚至在很多地方,這種能力反而會成為累贅。比如學信號處理搞DSP的,學雷達用Matlab做仿真的,甚至是做操作系統底層開發的,都不是很需要這種級別的抽象能力。那么難道這些領域的軟件開發不要復用嗎?不是,他們會以自己的方式來實現這個目標。最能運用OO的相關工具,把OO提供的抽象能力發揮到淋漓盡致的就是信息系統開發這個領域。這恐怕也是現在最龐大的軟件技術社區之一。正是這個現狀,才顯得學OO,用OO的人群那么大,OO是那么的流行,那么的重要。
??? 當我們把現在所有戴著OO帽子的技術、名詞和概念慢慢梳理之后就會發現,它們存在的意義都是封裝變化、隔離變化,實現復用。這里我想起了idior的《沿著重用我們一路走來》。通過實現重用減少軟件開發中的低水平簡單重復勞動是軟件技術發展的主線,OO只是這個過程中一朵絢麗的浪花,是搞信息系統開發這幫人的強大武器。
??? OO與SOA就不是同一個層次上的概念,提出的目標不同,針對的問題不同,成熟程度更不同。關于SOA的內涵,到現在也還是像“九二共識“一樣,各有各的解讀。IBM,Microsoft,Oracle等各大廠商(或者叫概念炒家)都有自己對SOA的理解、詮釋和解決方案。而在社區中,認為SOA是舊瓶裝新酒,是概念炒作的,有之;將SOA的概念推廣,認為其在軟件中無處不在,甚至Anything is Service的,有之。今年春節時和一個在柏林工大讀碩士的哥們聊天,他在西門子還有份兼職,說到SOA,他說據他了解至少在德國,目前SOA還在天上飄。
??? 我的感覺是,SOA的概念源于產業界,而非學術界,這樣的概念如果要進入學術界必須要非常謹慎。但現在SOA已經不僅在產業界熱炒,而且正在向學術界蔓延。這未必是一個好現象,因為產業界提出的新概念可能是需求牽引,更可能是利益驅動,其學術價值可能非常低。所以我們廣大在校攻讀學位的兄弟們一定要保持清醒的頭腦,至少要明白這個概念為什么提出,目標是什么,摸清其產生的縱向與橫向原因脈絡,不要盲目跟風,更不要把根本不是一個層次上的概念(比如OO)拿來亂攪和。
??? 那么在現在“王子復仇記”般繽紛演繹的SOA大戲臺上,什么才是需要把握的呢?我覺得idior的“四點式SOA”總結的比較好:
1、SOA是松耦合的
2、SOA是基于消息的
3、SOA是用于系統集成的
4、SOA的用武之地就在于構建組合型應用
??? 言簡意賅。特別是第3點,個人覺得道出了目前SOA的應用領域,即用于所謂“煙囪林立”的信息系統的整合,這些“煙囪”高矮粗細越不相同(系統異構性越強),離的越遠(地理分布越廣),那么SOA就越能發揮效力。前幾天wayfarer舉了一個全球酒店預定系統的例子,就很好的說明了這一點,這恐怕可以算是飄在天上的SOA觸到地面的一個腳尖吧。
??? 那么我們再回過頭來看OO。這可不是個新概念了,它從OOL(面向對象的語言)開始,發展成包括概念、原理和原則的完整理論體系。OO是個神奇的東西,它可簡可繁,簡能簡到只用“封裝、繼承、多態”六個字就能表達;繁的話可以讓李建忠用近兩個鐘頭的一整個WebCast也僅僅講了個提綱挈領。近年來隨著敏捷、測試驅動、設計模式、企業應用架構模式等OO的高級主題和方法論逐漸升溫,OO甚至已經升華到了一個哲學思想的高度,它已經滲透到從界面、邏輯到數據的各個層面和從分析、設計到編碼的各個階段,成為目前主流的軟件開發思想與范型。
??? 然而我們應該看到,抽絲剝繭,OO思想中所蘊含的最重要的部分是什么?按照前文的思路,我們應該搞清楚的是OO提出的目標和針對的問題是什么。如果讓我用一句話來概括,那么或許應該是:運用抽象的力量封裝變化,隔離變化,實現復用。軟件的復用是軟件技術發展的目標,把握住這個目標就找到了軟件技術發展的脈絡。OOL的出現從實現層面上為達到這個目標提供了一個強大的武器,后來UML的出現又從分析與設計層面為達到這個目標進一步強化了這個武器。但退一步想想,其實要達到這個目的,沒有OOL,沒有UML一樣也行。我們見過一些C達人(或者叫偏執者)用函數指針模擬繼承和多態,然后說:這個我也能實現!除了對他C語言深厚的功底感到欽佩以外,我沒有其他感覺,期待匯編達人跳出來用ASM模擬一下基于寄存器的繼承和多態,更期待01達人用打孔機模擬……我們不推崇這種倒轉歷史車輪的做法,既然發明了打火機,干嗎還去鉆木取火?我覺得他們的目的無非是為了說明OOL的OO特性對于他們來說沒有什么用,如果硬要用的話,他們用C也能實現。但是這至少說明OO在有些地方并不一定適用。那么既然OO那么厲害,真的還有它起不了作用的地方嗎?
??? 近年來,國內技術社區不斷成長和成熟的一個顯著標志就是關于“語言之爭”的話題越來越少,大家逐漸意識到為“是C語言厲害,還是Java牛逼;是vb.net時髦,還是C#強大”爭的面紅耳赤就像在為“是螺絲刀厲害,還是電鋸厲害”爭論一樣,除了在不經意間(當然也可能是有意的)成了某個商業公司的代言人,為其做了免費宣傳以外,沒有其它任何意義。與之前的技術相比,OO之所以算是一種進步,就在于其提供了更高層的抽象能力,在特定的軟件開發領域內,這種能力非常重要,它能夠讓開發人員更加方便的去封裝變化和隔離變化。注意,我用了“特定的軟件開發領域”,也就是說,并非所有需要編程的地方都需要OO的這種抽象能力,甚至在很多地方,這種能力反而會成為累贅。比如學信號處理搞DSP的,學雷達用Matlab做仿真的,甚至是做操作系統底層開發的,都不是很需要這種級別的抽象能力。那么難道這些領域的軟件開發不要復用嗎?不是,他們會以自己的方式來實現這個目標。最能運用OO的相關工具,把OO提供的抽象能力發揮到淋漓盡致的就是信息系統開發這個領域。這恐怕也是現在最龐大的軟件技術社區之一。正是這個現狀,才顯得學OO,用OO的人群那么大,OO是那么的流行,那么的重要。
??? 當我們把現在所有戴著OO帽子的技術、名詞和概念慢慢梳理之后就會發現,它們存在的意義都是封裝變化、隔離變化,實現復用。這里我想起了idior的《沿著重用我們一路走來》。通過實現重用減少軟件開發中的低水平簡單重復勞動是軟件技術發展的主線,OO只是這個過程中一朵絢麗的浪花,是搞信息系統開發這幫人的強大武器。
轉載于:https://www.cnblogs.com/Elong/archive/2007/05/26/760380.html
總結
以上是生活随笔為你收集整理的面向对象,面向服务(转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 医院统一社会信用代码
- 下一篇: 在ASP.Net中使用FCKeditor