Шта је средњи софтвер?

Ključni zaključci

  • Posrednički softver (middleware) obezbeđuje strukturirane protokole za povezivanje aplikacija, pojednostavljujući razvoj i omogućavajući efikasnu komunikaciju.
  • Ovaj tip softvera omogućava bržu implementaciju izmena i nudi lako dostupne alate za rad.
  • Posrednički softver predstavlja oblik modularnosti koji je koristan u svim nivoima programiranja, od visokog do niskog.

Možda ste čuli termin „posrednički softver“ u različitim kontekstima i zapitali se o čemu je reč. Otkrijte širok spektar tehnologija i procesa na koje se ovaj termin može odnositi.

Posrednički softver ima različita značenja

Posrednički softver je fleksibilan termin koji se koristi za različite stvari. U najširem smislu, možete ga zamisliti kao „program koji se izvršava između drugih programa“. Drugim rečima, to je bilo koji softver koji zavisi od zasebnog koda za unos i obradu izlaza.

Neki posrednički softver postoji kao potpuno razvijena aplikacija koja transformiše podatke iz jednog stanja u drugo, sa jasno definisanim protokolima i formatima podataka za upotrebu od strane drugog koda. Međutim, posrednički softver može biti granularan, kao što je pojedinačna funkcija koja se povezuje sa nizom drugih funkcija koje izvršava neki okvir.

Kao i kod mnogih softverskih rešenja, posrednički softver koristi prednosti koncepta modularnosti: razbijanje složenih procesa na manje, lakše upravljive delove.

Kako funkcioniše posrednički softver?

Posrednički softver je obično snažan koliko i njegovi protokoli i javno definisano ponašanje. Strogi protokoli komunikacije omogućavaju programerima da pišu softver koji prati standarde kako bi pravilno funkcionisao.

Server web aplikacije deluje kao posrednički softver, povezujući korisnički interfejs web sajta sa logikom i modelom podataka koje obezbeđuju pozadinska aplikacija i baza podataka. Budući da nije čvrsto povezan sa sistemima sa kojima komunicira, moguće je – barem u teoriji – zameniti server aplikacije kompatibilnim rešenjem bez potrebe za ponovnim pisanjem koda aplikacije ili restrukturiranjem baze podataka.

Komponente posredničkog softvera često koriste tehnologije poput JSON, REST, XML i SOAP. Sve su to zrele, popularne i tekstualno zasnovane tehnologije, što znatno olakšava zamenu ili preuređivanje komponenti. Njihov tekstualni format i širok spektar alata takođe omogućavaju lakše i pouzdanije otklanjanje grešaka.

Različite vrste posredničkog softvera

Pošto je termin širok, postoji mnogo različitih primera i primena posredničkog softvera. Neki od najčešćih uključuju:

  • Posrednici poruka, koji dodaju strukturu komunikaciji između procesa.
  • Serveri web aplikacija i web okviri.
  • Engine za igre, koji obezbeđuju standardno ponašanje koje možete koristiti, proširiti ili zameniti.
  • Platforme za strimovanje događaja kao što je Apache Kafka.

Korišćenje posredničkog softvera u razvoju softvera

Jedna od najopipljivijih primena posredničkog softvera je kroz web okvire. Većina okvira pruža osnovno okruženje koje možete prilagoditi i proširiti u skladu sa svojim zahtevima. Model često uključuje prosleđivanje HTTP zahteva kroz niz ugrađenih i prilagođenih funkcija, u definisanom redosledu, i vraćanje HTTP odgovora na kraju.

Okvir Express.js koristi ovaj model za podršku prilagođavanju. Uzmite ovaj primer funkcije posredničkog softvera napisanu u JavaScript-u:

 app.use('/user/:id', (req, res, next) => {
  console.log('Request Type:', req.method)
  next()
})

Funkcija je jednostavna:

  • Obrđuje određene URL-ove koji počinju sa „/user/“, nakon čega sledi ID.
  • Beleži tip metode zahteva, koji može biti GET, POST itd.
  • Zatim poziva funkciju da nastavi sa obradom lanca funkcija posredničkog softvera.

Taj poslednji poziv na „next“ je ključni korak u procesu posredničkog softvera i pokazuje koliko ovaj pristup može biti svestran. Sve dok se svaka funkcija posredničkog softvera ponaša nezavisno, možete ih zameniti i ukloniti, i lako promeniti redosled ponašanja celog lanca.

PHP okvir Laravel ima gotovo identično podešavanje posredničkog softvera. Obratite pažnju kako prostor imena eksplicitno definiše ovu klasu kao „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);
    }
}

Opet, uloga ove specifične klase je veoma jednostavna: ona proverava zahtev da vidi da li sadrži token. U ovom slučaju, funkcija posredničkog softvera može da prekine lanac, odbijajući da pozove sledeću funkciju i umesto toga vrši preusmeravanje. Funkcija preusmeravanja će vratiti odgovarajući objekat Response, koji funkcija posredničkog softvera treba da vrati kao deo svog potpisanog ugovora.

Ovaj poslednji primer pokazuje kako Django, web okvir zasnovan na Pythonu, rukuje posredničkim softverom. Django koristi termin „dodatak“ (plugin) da opiše svoju arhitekturu posredničkog softvera, koja je slična drugim terminima koje možete čuti, kao što su „hook“ ili „callback“. U suštini, to je samo još jedan slučaj podešavanja posredničkog softvera koji pruža fleksibilnost tokom strukturiranog procesa.

 def simple_middleware(get_response):
    

    def middleware(request):
        
        

        response = get_response(request)

        
        

        return response

    return middleware

Zatim možete kontrolisati koji se posrednički softver izvršava i kojim redosledom pomoću jednostavnog niza:

 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 obezbeđuje standardno ponašanje, kao što je klasa CommonMiddleware, od koje većina aplikacija ima koristi; zabranjuje pristup određenim „lošim“ korisničkim agentima i upravlja normalizacijom URL-ova. Uobičajeno je da se posrednički softver koji je od ključne važnosti i fokusiran na bezbednost pokreće rano u procesu, ali ova fleksibilnost vam omogućava da prilagodite redosled u skladu sa potrebama vaše aplikacije.

Zašto je posrednički softver koristan?

Posrednički softver olakšava povezivanje aplikacija koje nisu dizajnirane za to. Pruža funkcionalnost za njihovu integraciju, zajedno sa robustnim, strukturiranim protokolima pomoću kojih mogu da komuniciraju.

Kao rezultat toga, posrednički softver ima neke važne prednosti, uključujući:

  • Pojednostavljen razvoj aplikacija i kraće vreme za izlazak na tržište.
  • Efikasno povezivanje.
  • Bržu implementaciju izmena.
  • Lako dostupne alate za rad.

Na kraju, posrednički softver predstavlja oblik modularnosti, koncept koji je koristan kada se primenjuje na sve oblike programiranja, od najvišeg do najnižeg nivoa.