middleware
美 ['mɪdlweə(r)]
英 ['mɪdlweə(r)]
n.中间件(允许不同程序协同工作)
网络中介软件;中间软件;中介软体
显示中间件
数据 -->> 复杂数据处理函数 -->> 显示驱动 -->> LCD pannel
数据 -->> 简单数据处理函数 -->> 中间件/第三方库(显示驱动 GUI库) -->> LCD pannel
程序运行(运行函数)中间件
由程序员全程管理的运行
main -->> 复杂的函数运行管理逻辑 -->> 需要运行的函数
问题:
1. 当程序越来越庞大,越来越复杂时,“复杂的函数运行管理逻辑”的处理,头大、耗时、难解的Bug,越来越麻烦,直到崩溃?
2. 使用第三方库,这也是使用“中间件”的一种表现。
将“复杂的函数运行管理逻辑 ”交给中间件(操作系统)来完成
main -->> 中间件/第三方库(操作系统也可以视为是一种中间件) -->> 需要运行的函数
问题:
1. 从" main -->> 中间件/第三方库(操作系统也可以视为是一种中间件)"的过程,对于程序员老说,是黑箱操作;有时不是程序员自己能够掌控的,只能由中间件制造者来保证其性能,以及中间件的可用性。
2.对于具体的应用软件来说,“操作系统”也是一种中间件;这种思想,有助于正确认识 OS本身的实质,避免迷失在 OS”高、大、上“市场炒作宣传的泥潭中。
3.对于中间件,有时程序员只能选择,或者暂时处在唯一选择的状态。
日常生活中间件
人 -->> 手机(这也是一种中间件)-->> 无线电波
说明:
1. “中间件”,无处不在:
编译器也属于一种中间件,或者说、任何一个过程单元,本质上都属于是一个中间件。
我们不能因为担心“中间件”可能存在问题,而否定、排斥使用中间件的做法。因为它们无所不在。
2.使用 “中间件”,这是“避免重复造轮子”的一种表现。
3.选择恰当的 “中间件”,就有了 60%以上的概率,来保证项目的成功。
“单位创造”,诞生于对各种“中间件”的厨师式的整合。
创造有具体的,也有抽象的。
全新创造的初期,大多来源于“模仿”,诞生的厨师式的组合与整合。
从战略的高度,树立起“针对中间件编程”的思想
1. 模块/部件的分类方法之一
纯软件型、纯硬件型、软硬件混合型。
2. 按钮 -->> MCU中的代码 -->> LED显示
将“按钮”和“LED显示”这两种纯硬件型的模块/部件,视为是两极的终端,则“MCU中的代码”就是“中间件”。
将“成品材料”和“成品按钮”视为是两极的终端,则它们在两极终端之间的产出,也属于细化了的“中间件”。
3. 克服全程编程的思想,避免重复造轮子。
全程编程?所有的过程与逻辑,都由程序员自己来掌控,试图把控编程过程中的一切,这不现实@!
编程离不开编译器,为了获得全程的把控,难到程序员也有自己来开发“编译器”吗?
“中间件编程”,复杂场景,以应对复杂的客观现实;变化场景,以获得最佳的结果
1. “中间件编程”,战略上的永远,战术上的不可能永远。
针对“操作系统型的中间件”编程,有的应用不必考虑编写底层驱动,因为 OS厂家已经给出了标配。
有的应用必须考虑编写底层驱动,因为 OS厂家默认给出的驱动,不可能做到无所不包。
2. “正无穷大”属于战略上的永远。
在现实生活的绝大多数场景里,人们需要的却是具体的数值;在战术上,永远并不见得是人们所需要的东西。
无处不在的中间件
在坐标系的“负无穷大”和“正无穷大”之间,都属于“中间件”。
相对于在坐标区间的两端,其中间部分,就属于“中间件”。
“中间件”的粒度划分,也是无穷的,就如坐标区间的划分一样,每一个坐标区间都可被视为是一个整体的颗粒。
没有最好,只有更好:每一个颗粒的完整性划分,和坐标区间一样;在不同的应用场景之下,会存在一个合理的划分范围。