大学的时候无意看到这么一句话,宛如醍醐灌顶,以前恍惚中写下的代码瞬间清晰了起来。
这句话包含两个要素,一个是软件工程,一个是中间层
什么是软件工程?在我看来需要写代码的或多或少都有软件工程的要素。
小到hello world,大到搜索引擎,都是软件工程。
而类似于登月计划、强子对撞、基因模拟这类规模非常庞大的项目,软件工程只是其中一个小块,但也可以用中间层来解决问题
于是中间层又是什么呢?我总结为连接两个事物的事物。
比如两个模块A和B,之间数据结构不互通,一个接收json,一个接收protobuf,这时候就需要一个模块C,将A的json转为protobuf传给B,将B的protobuf转为json传给A。
而模块B就可看作一个中间层
再往大了看,一个http请求,是将服务器里的数据与显示器相连接,两者之间本身是不能互通的,请求经过了用户区、内核区、网卡、网线、交换机、路由器、nginx、应用服务器、数据库驱动等等中间层才访问到了数据库,然后再一层一层的将数据返回到显示器。
再往大了看,你看上一个妹子的时候,是不是通常苦于对妹子一无所知,无从下手,于是先找个你和妹子都认识的中间层来沟通传递消息?