在後端開發的學習過程中,Middleware 會不時在文件、教材,或查詢資料中出現;但「究竟什麼是 Middleware?」「為什麼 Middleware 存在?」「Middleware 解決了哪些問題?」對大部分人來說都是陌生、抽象、未知的概念。
有鑒於有關 Express Middleware 的官方文件或資料都非常多,本篇並不會探討如何實作 Express 中的 Middleware function。並將火力集中在 Middleware 這個「軟體設計概念」本身。
解決哪些問題:
誰適合閱讀:
參考資料:
Middleware 不只存在於 Express 中的;反過來說,Express 透過 Middleware 概念來設計的框架。
The term middleware first appeared in a report following the 1968 NATO Software Engineering conference in Garmisch-Partenkirchen, Germany. The conference sought to define the field of software engineering, and included software design, production, and distribution.
-- from Red Hat
Middleware 是一種軟體設計概念,早在 1968 年的全球行軟體工程年會上被發表。並且至今被應用在包含網路應用程式開發等,各種軟體工程的層面中。
在理解 Middleware 的觀念前,必須先釐清「為何 Middleware 存在?」
讓我們先回顧軟體開發基礎觀念的源頭:「Input-Process-Output」流程:設計軟體的終極目標就是解決某些問題(input),並得到期待的結果(output)。兩者間的差距就是我們的解決方案(process)。
然而在真實情況中,往往不會只有簡單的三個階段。可能 input 就有數個,並且每個 input 還要各自前置處理;process 還分數個階段、加上非同步的處理過程;最後的 output 還要再做點事情⋯⋯
於是 Middleware 軟體設計概念因應而生,幫助我們:
Developers are juggling multiple tools, languages, and frameworks. And the pressure is on to do more in less time and at a lower cost.
Organizations turn to middleware as a way to manage this complexity and to keep application development quick and cost-effective. Middleware can support application environments that work smoothly and consistently across a highly distributed platform.
-- from Red Hat
high way from Unsplash
Middleware 是個抽象概念,是個程式設計的模式或觀念,用以在 process 前中後加入任意需要的 input;或在處理過程中切換不同的 process;也可能是在 Output 前作最後的修飾或處理!
用高速公路來比喻,如果 process 是交流道,middleware 可能就是交流道前後的交管或者交流道中間的收費站。
既然 Middleware 是個被廣泛應用的概念,那他可以用來做些什麼呢?
from Red Hat
from Red Hat
from Red Hat
簡言之就如前所說:「可以跨應用程式、跨產品/服務,甚至跨平台整合解決方案」。是非常實用的軟體設計概念。
關於本系列更多內容及導讀,請閱讀作者於 Medium 個人專欄 【無限賽局玩家 Infinite Gamer | Publication – 】 上的文章 《用 JavaScript 打造全端產品的入門學習筆記》系列指南。