大學(xué)的時(shí)候無意看到這么一句話危喉,宛如醍醐灌頂,以前恍惚中寫下的代碼瞬間清晰了起來费什。
這句話包含兩個(gè)要素,一個(gè)是軟件工程,一個(gè)是中間層
什么是軟件工程矿筝?在我看來需要寫代碼的或多或少都有軟件工程的要素。
小到hello world细诸,大到搜索引擎利赋,都是軟件工程中燥。
而類似于登月計(jì)劃咱扣、強(qiáng)子對撞壮池、基因模擬這類規(guī)模非常龐大的項(xiàng)目褪储,軟件工程只是其中一個(gè)小塊痘拆,但也可以用中間層來解決問題
于是中間層又是什么呢?我總結(jié)為連接兩個(gè)事物的事物氮墨。
比如兩個(gè)模塊A和B纺蛆,之間數(shù)據(jù)結(jié)構(gòu)不互通,一個(gè)接收json规揪,一個(gè)接收protobuf桥氏,這時(shí)候就需要一個(gè)模塊C,將A的json轉(zhuǎn)為protobuf傳給B猛铅,將B的protobuf轉(zhuǎn)為json傳給A字支。
而模塊B就可看作一個(gè)中間層
再往大了看,一個(gè)http請求奸忽,是將服務(wù)器里的數(shù)據(jù)與顯示器相連接堕伪,兩者之間本身是不能互通的,請求經(jīng)過了用戶區(qū)栗菜、內(nèi)核區(qū)欠雌、網(wǎng)卡、網(wǎng)線苛萎、交換機(jī)桨昙、路由器、nginx腌歉、應(yīng)用服務(wù)器蛙酪、數(shù)據(jù)庫驅(qū)動等等中間層才訪問到了數(shù)據(jù)庫,然后再一層一層的將數(shù)據(jù)返回到顯示器翘盖。
再往大了看桂塞,你看上一個(gè)妹子的時(shí)候,是不是通斥裳保苦于對妹子一無所知阁危,無從下手,于是先找個(gè)你和妹子都認(rèn)識的中間層來溝通傳遞消息汰瘫?