大學(xué)的時候無意看到這么一句話,宛如醍醐灌頂,以前恍惚中寫下的代碼瞬間清晰了起來。
這句話包含兩個要素,一個是軟件工程,一個是中間層
什么是軟件工程?在我看來需要寫代碼的或多或少都有軟件工程的要素。
小到hello world,大到搜索引擎,都是軟件工程。
而類似于登月計劃、強子對撞、基因模擬這類規(guī)模非常龐大的項目,軟件工程只是其中一個小塊,但也可以用中間層來解決問題
于是中間層又是什么呢?我總結(jié)為連接兩個事物的事物。
比如兩個模塊A和B,之間數(shù)據(jù)結(jié)構(gòu)不互通,一個接收json,一個接收protobuf,這時候就需要一個模塊C,將A的json轉(zhuǎn)為protobuf傳給B,將B的protobuf轉(zhuǎn)為json傳給A。
而模塊B就可看作一個中間層
再往大了看,一個http請求,是將服務(wù)器里的數(shù)據(jù)與顯示器相連接,兩者之間本身是不能互通的,請求經(jīng)過了用戶區(qū)、內(nèi)核區(qū)、網(wǎng)卡、網(wǎng)線、交換機、路由器、nginx、應(yīng)用服務(wù)器、數(shù)據(jù)庫驅(qū)動等等中間層才訪問到了數(shù)據(jù)庫,然后再一層一層的將數(shù)據(jù)返回到顯示器。
再往大了看,你看上一個妹子的時候,是不是通??嘤趯γ米右粺o所知,無從下手,于是先找個你和妹子都認識的中間層來溝通傳遞消息?