從2000年左右以JAVA技術(shù)為本的應(yīng)用web化到當(dāng)前以云為本來構(gòu)建應(yīng)用,這接近20年來技術(shù)演進(jìn)趨勢來看。應(yīng)用軟件架構(gòu)的變與不變整體上還是能夠看出來一些脈絡(luò)。
先講不變的。
用于構(gòu)建應(yīng)用領(lǐng)域邏輯本身的技術(shù)并無本質(zhì)變化。從領(lǐng)域邏輯建???,基本還是圍繞著對象以及對象之間的連接關(guān)系。SOLID原則依然充滿了活力,GOF的設(shè)計(jì)模式仍然是常青樹。UML以及其工具仍然是主流建模方法和溝通語音。即使從JAVA數(shù)個(gè)版本來看,也僅僅是語音特性上的改進(jìn)(如泛型、λ表達(dá)式)并沒有出現(xiàn)根本性的邏輯形式化方法。因此,構(gòu)建領(lǐng)域邏輯的技術(shù),無論是設(shè)計(jì)方法還是具體程序編制技術(shù),沒有本質(zhì)上的變化。
其次,在企業(yè)應(yīng)用領(lǐng)域,關(guān)系數(shù)據(jù)庫仍然是核心數(shù)據(jù)模型以及存儲(chǔ)的主流技術(shù)。這一點(diǎn)可能不太嚴(yán)謹(jǐn),而且當(dāng)下關(guān)系分布式、分庫等技術(shù)快速演進(jìn)(Google Spanner等),另外nosql生態(tài)也正在蓬勃發(fā)展。但是數(shù)據(jù)關(guān)系的核心技術(shù)還是二維表。應(yīng)用邏輯構(gòu)建技術(shù)各類orm框架正是致力于解決對象和關(guān)系的映射問題。
以上兩點(diǎn)是穩(wěn)定部分。
再講,變化的。
運(yùn)行時(shí)環(huán)境,應(yīng)用宿主平臺(tái)發(fā)生了翻天覆地的進(jìn)步。從基礎(chǔ)設(shè)施角度看,基本分幾個(gè)階段,PM + 商業(yè)中間件,PM + 開源輕量級(jí)中間件,VM + 輕量級(jí)開源中間件,容器化等。
應(yīng)用全局架構(gòu)的變化,從單體架構(gòu)到微服務(wù)架構(gòu)。(待續(xù))
應(yīng)用部署的分布式云化。
應(yīng)用構(gòu)建的組織結(jié)構(gòu)、工具、部署、運(yùn)維方式的同步演進(jìn)。
應(yīng)用的生態(tài)化發(fā)展,產(chǎn)業(yè)分工的演進(jìn)。
以上是發(fā)生演進(jìn)進(jìn)化的幾點(diǎn)。
指出變化與不變,相對清晰和容易。為什么會(huì)產(chǎn)生變化,以及為什么不變的部分是穩(wěn)定的,這個(gè)問題更具有啟發(fā)性思考的價(jià)值。下面就來談?wù)劇?/p>
待續(xù)。。。