平台是軟體架構中用得比較多的一個詞。作業系統是一個平台,Java和.Net的虛擬機器是一個平台,這些平台都是和電腦本身結合得比較緊密的。在我們做具體的項目時,業務部分是花費精力比較大的一塊,而業務平台的構建可以大大地提高開發效率,並且可以有效提升軟體品質。這裡講一講業務平台在系統中的位置。
一、領域層最難做
在三層結構中,領域層是最麻煩的一部分。首先,領域層要能正確地實現需求,然後還要能快速地應對變化。使用者屬陽,資料屬陰,領域層就是在陰陽之間調和。編碼結束後,系統中的缺陷數,不管是需求上的、設計上的、編碼上的,大部分都集中在領域層了。正因為它難做,所以我們才需要針對業務尋求解決辦法。
二、兼三才而兩之
世界分為天、地、人三才,天屬陽、地屬陰、人為和。孤陰不生,孤陽不長,三才的每一個之中又有陰陽之分,“兼三才而兩之”,3*2=6,最終形成周易中的六爻。
領域層為人,在領域層中來找陰陽就能看出今天要說的概念——業務平台。
三、領域層中的陰陽
業務平台的表現形式是多種多樣的,不同公司、不同行業、不同應用範圍的平台都不相同。所以今天不說平台具體的樣子,而是談一談它的本質。本質弄清楚了,也就瞭解了平台的核心思想,無論是要去學某一個平台,還是我們今後要自己做一個平台都是有好處的。
3.1 平台為陰
業務平台是屬於領域層的一部分。平台在架構圖中都是處在下方,並且是需要非常穩定,因為它需要能支撐起整個系統架構。在做項目時,最頭疼的問題就是需求不停的變化,加上中國地大物博,導致地區特性非常多,這些都是在分析設計時的不穩定因數。
中國有句老話:“以不變應萬變”。可以說我們是最懂得變的人,把握住變的核心就是“不變”。
世界上有三種人,第一種是“詛咒變化”,一旦出現了變化就罵罵咧咧,覺得自己沒有做錯,而是環境錯了;第二種是“擁抱變化”,不管什麼變化來了我都接受,然後用樂觀積極的心態來面對;第三種是“引導變化”,隨時都能走在變化的前面,以我的不變來對付你的萬變。
軟體行業對變化可以說是深惡痛絕,剛踏入職業程式員門檻的人,很少有不罵需求變化的人。當然,這確實是有點失敗,本來計劃做得好好的,Project的任務排的滿滿的,一切都沒有問題,誰知道中途發生這麼件事情。沒辦法,做軟體避免不了變化的。
到了進階一點的做法,那就是“擁抱變化”了。發現需求變化後,程式員都在罵人,不幹活了,怎麼辦?經理們,或者資深的程式員站出來了,說:“心態決定一切。我們要擁抱變化,有變化才能體現出我們的設計模式沒有白學,我們的能力很強啊。”這種方法比第一種就要好得多了,但還不是最好的。
擁抱變化怎麼說也是跟在變化後面跑,只不過有跟得緊一點或者跟丟了的區別,不能算上乘。如果我們能走在變化的前面,這樣才能以最低的成本來應對變化,平台的思想正是這樣的。
平台為陰,主靜,處下。穩定對於平台來說是非常重要的。
3.2 應用為陽
上面說了,平台只是領域層的一部分,沒有哪個軟體可以直接將平台當作領域層直接丟給使用者的。平台為陰,主靜,但實際的業務卻變化多端,所以我們需要在平台上構建我們具體的業務,或者通過設定檔,或者通過指令碼語言。
在平台之上構建的應用主要是將平台的功能發揮出來,讓原本主靜的平台發揮出各種各樣的功能。
應用為陽,主動,處上。怎樣能更好的變化是應用程式層需要解決的問題。像動態語言、或者外掛程式技術都是不錯的解決方案。
3.3 其他
平台說起來真是好處多多,但為什麼平台這麼少,中國的軟體公司擁有自己業務平台的並不多見。主要原因是開發平台的成本高,技術難度大,如果是業務平台的話則還需要對業務的理解程度要相當深刻。
軟體從表面來看是一個陽性的產業,因為它要求快,要求動,具有陽的特性。但經過這麼多年的發展後,我們反而發現了平台這類屬陰的產物。真是“陰陽相生”了。在一個陽性的產業裡不斷地提煉出陰性的東西,這點也是相當困難以及不可理解的,不過理解了易經的道理之後,這卻是相當自然的一件事了。
當然,並不是所有的公司,所有的項目都適合選用平台技術。對於技術積累比較少的公司,在分出三層架構後也並不一定要在領域層中強行的分出陰陽。不用平台也一樣是可以做出相當成功的軟體。
四、以靜制動、以下取上
說起中國的“道”,也許有很多人都會認為這裡面儘是一些自相矛盾的話。比如說“以靜制動、以下取上”。粗看起來,似乎沒有任何道理,按照常識來說,很顯然是“動克靜、上克下”,怎麼這種騙人的話能流傳幾千年呢。
結合這裡介紹的業務平台來理解,就相當清晰了。
應對變化最有效方法就是不變,平台屬陰,主靜,卻正好能協助我們應對各種各樣動的業務變化,這點就是“以靜制動”。同時平台又處下,處於下位的平台能影響到上面的所有應用——以下取上。
這樣看來,道理是在任何地方都相通的啊。