iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 27
0
Modern Web

用 JavaScript 打造全端產品的入門學習筆記系列 第 27

深入淺出 Middleware——全端開發者內功 II

Middleware

from GET THERE WITH MIDDLEWARE | The Playhouse Group

在後端開發的學習過程中,Middleware 會不時在文件、教材,或查詢資料中出現;但「究竟什麼是 Middleware?」「為什麼 Middleware 存在?」「Middleware 解決了哪些問題?」對大部分人來說都是陌生、抽象、未知的概念。

筆記目的

有鑒於有關 Express Middleware 的官方文件或資料都非常多,本篇並不會探討如何實作 Express 中的 Middleware function。並將火力集中在 Middleware 這個「軟體設計概念」本身。

解決哪些問題:

  • 為什麼有 Middleware?
  • 到底什麼是 Middleware?
  • Middleware 有哪些應用層面?

誰適合閱讀:

  • 想深入了解 Middleware 者
  • 想優化程式設計邏輯者

參考資料:

 

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 的觀念前,必須先釐清「為何 Middleware 存在?」

讓我們先回顧軟體開發基礎觀念的源頭:「Input-Process-Output」流程:設計軟體的終極目標就是解決某些問題(input),並得到期待的結果(output)。兩者間的差距就是我們的解決方案(process)。

Input/Output/Process

from WHAT MAKES COMPUTER A COMPUTER

然而在真實情況中,往往不會只有簡單的三個階段。可能 input 就有數個,並且每個 input 還要各自前置處理;process 還分數個階段、加上非同步的處理過程;最後的 output 還要再做點事情⋯⋯

實際的 Input-Process-Output

於是 Middleware 軟體設計概念因應而生,幫助我們:

  • 降低每個步驟的耦合,達成關注點分離 (separation of concerns, SOC)
  • 建構暫時性的處理方式,而不影響整體程式運作
  • 不只跨路由、更可以跨應用程式、跨產品/服務,甚至跨平台整合解決方案

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

到底什麼是 Middleware?

高速公路

high way from Unsplash

Middleware 是個抽象概念,是個程式設計的模式或觀念,用以在 process 前中後加入任意需要的 input;或在處理過程中切換不同的 process;也可能是在 Output 前作最後的修飾或處理!

用高速公路來比喻,如果 process 是交流道,middleware 可能就是交流道前後的交管或者交流道中間的收費站。

Middleware 有哪些應用層面?

既然 Middleware 是個被廣泛應用的概念,那他可以用來做些什麼呢?

middleware application1

from Red Hat

  • 新增、優化或整合應用程式(App)

middleware application2

from Red Hat

  • 以 API 跨平台應用

middleware application3

from Red Hat

  • 數據串流與自動化應用等

簡言之就如前所說:「可以跨應用程式、跨產品/服務,甚至跨平台整合解決方案」。是非常實用的軟體設計概念。

 


閱讀更多

Infinite Gamer
關於本系列更多內容及導讀,請閱讀作者於 Medium 個人專欄 【無限賽局玩家 Infinite Gamer | Publication – 】 上的文章 《用 JavaScript 打造全端產品的入門學習筆記》系列指南


上一篇
手刻登入功能:帳密檢查、保存登入狀態——全端刻意練習 IV
下一篇
我如何鍛鍊解決問題的能力——全端開發者內功 III
系列文
用 JavaScript 打造全端產品的入門學習筆記30

尚未有邦友留言

立即登入留言