Deo zbornika Principi razvoja softvera

Front kontroler

Prednji kontroler (front controller) je arhitektonski obrazac koji služi za centralizovanje obrade zahteva koje aplikacija prima. Prema ovom obrascu, jedan kontroler prima sve zahteve izvana i prosleđuje ih gde treba unutar aplikacije. Ovo omogućuje objedinjeno upravljanje rutama, sigurnošću i filtriranjem zahteva.

Front kontroler se često koristi u web aplikacijama i MVC arhitekturi, gde omogućuje upravljanje zahtevima pre nego što stignu do konkretnih kontrolera. Koristi se u okviru popularnih web okvira kao što su Spring MVC (Java), ASP.NET MVC (.NET), Express.js (Node.js) i mnogim drugim.

Karakteristike

  1. Centralizovana kontrola. Svi zahtevi prolaze kroz jedan centralni kontroler, što olakšava upravljanje pristupom, proveru autentikacije i autorizacije, kao i primenu filtera.
  2. Jednostavnije rutiranje. Front kontroler može da usmerava zahteve ka odgovarajućim kontrolerima ili akcijama, što pojednostavljuje rutiranje u aplikaciji.
  3. Ekstenzibilnost. Dodavanje novih funkcionalnosti, kao što su logovanje i autentifikacija, može se obaviti na jednom mestu bez izmene drugih delova koda.
  4. Poboljšana konzistentnost. Korišćenjem front kontrolera postiže se doslednost u rukovanju zahtevima jer svi zahtevi prolaze kroz isti kontrolni sloj.

Primer

U ovom primeru koristimo Express.js u Node.js aplikaciji kao front kontroler koji rukuje zahtevima.

const express = require('express')
const app = express()

// middleware za autentifikaciju
app.use((req, res, next) => {
  console.log(`Pristup zahtevu: ${req.method} ${req.url}`)
  next()
})

// definisanje ruta
app.get('/home', (req, res) => {
  res.send('Početna stranica')
})

app.get('/user', (req, res) => {
  res.send('Korisnička stranica')
})

// pokretanje servera
app.listen(3000, () => {
  console.log('Server radi na portu 3000')
})

U ovom primeru, app predstavlja front kontroler. Svi zahtevi dolaze prvo do njega, gde se primenjuje posrednik (middleware) za autentifikaciju zahteva, pre nego što budu usmereni ka odgovarajućim rutama.