Table of Contents
Klíčové věci
- Middleware poskytuje strukturované protokoly pro připojení aplikací, zefektivňuje vývoj a umožňuje efektivní konektivitu.
- Middleware umožňuje rychlejší přechod změn a poskytuje snadno dostupné nástroje na pracovišti.
- Middleware je forma modularity, která prospívá všem formám programování, od vysoké úrovně po nízkoúrovňovou.
Možná jste slyšeli lidi používat termín „middleware“ v různých kontextech a zajímalo vás, o čem to vlastně mluví. Objevte širokou a bohatou sadu technologií a procesů, na které by mohly odkazovat.
Middleware znamená mnoho věcí
Middleware je flexibilní termín, který lidé používají k označení různých věcí. V nejširším možném smyslu si to můžete představit jako „programy, které běží mezi jinými programy“. Jinými slovy, jakýkoli software, který závisí na samostatném kódu, který poskytuje svůj vstup a zpracovává jeho výstup.
Některé middleware existují jako plnohodnotná aplikace, která transformuje data z jednoho stavu do druhého, s dobře definovanými protokoly a datovými formáty pro použití v jiném kódu. Ale middleware může být také granulární jako jedna funkce a může se připojit k řadě dalších funkcí, které framework spouští.
Jako mnoho softwaru i middleware využívá konceptu modularity: rozděluje složitý proces na menší, lépe ovladatelné části.
Jak funguje middleware?
Middleware je obvykle tak silný jako jeho protokoly a veřejně definované chování. Přísné protokoly pro komunikaci umožňují programátorům psát software, který splňuje normy, aby správně fungoval.
Webový aplikační server funguje jako middleware, který propojuje uživatelské rozhraní webu s logikou a datovým modelem, který poskytuje back-endová aplikace a databáze. Protože není pevně propojen se systémy, které s ním komunikují, můžete – alespoň teoreticky – vyměnit aplikační server za kompatibilní, aniž byste museli přepisovat kód aplikace nebo restrukturalizovat databázi.
Komponenty middlewaru často využívají technologie jako JSON, REST, XML a SOAP. Všechny jsou vyspělé, oblíbené a založené na textu, což výrazně usnadňuje výměnu nebo změnu pořadí komponent. Jejich textový formát a široká škála sad nástrojů také umožňují snadnější a spolehlivější ladění.
Různé typy middlewaru
Protože je tento termín tak široký, existuje mnoho různých příkladů a použití middlewaru. Mezi nejběžnější patří:
- Zprostředkovatelé zpráv, kteří přidávají strukturu do meziprocesové komunikace.
- Webový aplikační server a webové rámce.
- Herní enginy, které poskytují výchozí chování, které můžete použít, rozšířit nebo nahradit.
- Platformy pro streamování událostí, jako je Apache Kafka.
Použití middlewaru při vývoji softwaru
Jedno z nejhmatatelnějších využití middlewaru je prostřednictvím webových rámců. Většina frameworků poskytuje základní prostředí, které si můžete přizpůsobit a rozšířit podle svých vlastních požadavků. Model často zahrnuje předávání požadavků HTTP prostřednictvím řady vestavěných a vlastních funkcí v definovaném pořadí a na konci vrací odpověď HTTP.
Framework Express.js používá tento model k podpoře přizpůsobení. Vezměte si tento příklad middlewarové funkce napsané v JavaScriptu:
app.use('/user/:id', (req, res, next) => {
console.log('Request Type:', req.method)
next()
})
Funkce je extrémně jednoduchá:
Tato poslední výzva k dalšímu je zásadním krokem v procesu middlewaru a ukazuje, jak všestranný přístup může být. Pokud se každá funkce middlewaru chová nezávisle, můžete je zaměňovat a vyměňovat a snadno měnit pořadí chování celého řetězce.
Rámec PHP, Laravel, má téměř identické nastavení middlewaru. Všimněte si, jak jmenný prostor explicitně definuje tuto třídu jako „Middleware“.
namespace App\Http\Middleware;use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;class EnsureTokenIsValid
{
* Handle an incoming request.
*/
public function handle(Request $request, Closure $next): Response
{
if ($request->input('token') !== 'my-secret-token') {
return redirect('home');
}return $next($request);
}
}
Role této konkrétní třídy je opět velmi specifická: vše, co dělá, je kontrolovat požadavek, zda obsahuje token. V tomto případě může funkce middlewaru přerušit řetězec, odmítnout volání další funkce a místo toho odeslat přesměrování. Funkce přesměrování vrátí příslušný objekt Response, který by funkce middlewaru měla vrátit jako součást své podpisové smlouvy.
Tento poslední příklad ukazuje, jak Django, webový rámec založený na Pythonu, zpracovává middleware. Django používá termín „plugin“ k popisu své architektury middlewaru, což je podobné dalším relevantním termínům, které můžete slyšet jako „háček“ nebo „zpětné volání“. V podstatě je to prostě další případ nastavení middlewaru, který poskytuje flexibilitu v celém strukturovaném procesu.
def simple_middleware(get_response):
def middleware(request):
response = get_response(request)
return response
return middleware
Poté můžete ovládat, který middleware a v jakém pořadí běží, pomocí jednoduchého pole:
MIDDLEWARE = [
"django.middleware.security.SecurityMiddleware",
"django.contrib.sessions.middleware.SessionMiddleware",
"django.middleware.common.CommonMiddleware",
"django.middleware.csrf.CsrfViewMiddleware",
"django.contrib.auth.middleware.AuthenticationMiddleware",
"django.contrib.messages.middleware.MessageMiddleware",
"django.middleware.clickjacking.XFrameOptionsMiddleware",
]
Django poskytuje výchozí chování, jako je třída CommonMiddleware, ze které bude mít prospěch většina aplikací; zakazuje přístup k určitým „špatným“ uživatelským agentům a řeší normalizaci URL. Je docela běžné, že kritický middleware zaměřený na bezpečnost běží na začátku procesu, ale tato flexibilita vám umožňuje přizpůsobit pořadí podle potřeb vaší aplikace.
Proč je Middleware užitečný?
Middleware usnadňuje propojování aplikací, které pro připojení nebyly navrženy. Poskytuje funkce pro jejich integraci spolu s robustními, strukturovanými protokoly, pomocí kterých mohou komunikovat.
V důsledku toho má middleware některé důležité výhody, včetně:
- Zjednodušený vývoj aplikací a zkrácení doby uvedení na trh.
- Efektivní konektivita.
- Rychlejší přechod změn.
- Snadno dostupné pracovní nástroje.
V konečném důsledku je middleware formou modularity, konceptu, který je výhodný při aplikaci na všechny formy programování, od nejvyšší úrovně až po nejnižší.