MODUL 1 - LEKCIJA 0.1

Osnove Weba: HTTP, DNS i Serveri

Kako zapravo funkcioniše internet? Od unosa URL-a do prikaza stranice.

⏱️ Trajanje: ~2 časa 📚 Nivo: Početni 🎯 Teorijski uvod

🌍 Kako Funkcioniše Web?

Kada u browser unesete adresu (npr. www.javnauprava.gov.ba), dešava se niz kompleksnih procesa u pozadini koji omogućavaju da vam se prikaže stranica. Ovaj proces traje milisekunde, ali uključuje komunikaciju između vašeg računara i servera širom svijeta.

HTTP and DNS Process Diagram

Ciklus zahtjeva: Od browsera do servera i nazad

1. DNS (Domain Name System)

Računari ne razumiju imena kao što je google.com. Oni komuniciraju koristeći IP adrese (npr. 142.250.180.206). DNS je imenik interneta koji prevodi ljudima razumljiva imena (domene) u IP adrese.

2. HTTP Protokol

Nakon što browser dobije IP adresu, on uspostavlja konekciju sa serverom i šalje HTTP Zahtjev (Request). HTTP (HyperText Transfer Protocol) je jezik kojim browser i server razgovaraju.

📝 Primjer HTTP Zahtjeva
GET /index.html HTTP/1.1
Host: www.javnauprava.gov.ba
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: text/html,application/xhtml+xml
📝 Primjer HTTP Odgovora
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Server: Microsoft-IIS/10.0



...sadržaj stranice...

🖥️ Web Serveri

Web server je softver koji sluša zahtjeve na određenom portu (obično 80 za HTTP ili 443 za HTTPS) i vraća traženi sadržaj.

Server Platforma Opis
IIS (Internet Information Services) Windows Microsoftov server. Duboko integrisan sa Windowsom. Pokreće ASP.NET aplikacije.
Apache Linux/Windows Najstariji i vrlo popularan open-source server. Koristi se često za PHP (LAMP stack).
Nginx Linux/Windows Poznat po visokim performansama. Često se koristi kao Reverse Proxy.
Tomcat Cross-platform Server za Java aplikacije (Servlets/JSP).

🚀 Kestrel i Reverse Proxy

U modernom .NET svijetu (.NET Core, .NET 5+), stvari funkcionišu malo drugačije. ASP.NET Core aplikacije po defaultu koriste Kestrel - super-brzi, cross-platform web server ugrađen u samu aplikaciju.

Reverse Proxy Architecture

🔄 Reverse Proxy Konfiguracija

Iako je Kestrel brz, nije dizajniran da bude direktno izložen internetu (security hardening, upravljanje certifikatima). Zato se ispred njega postavlja "tradicionalni" server (IIS na Windowsu ili Nginx na Linuxu) koji djeluje kao Reverse Proxy:

  1. Zahtjev dolazi na IIS (Port 80/443).
  2. IIS prosljeđuje zahtjev lokalno na Kestrel (npr. localhost:5000).
  3. Kestrel obrađuje C# logiku i vraća odgovor IIS-u.
  4. IIS vraća odgovor korisniku.

Node.js i Moderni Web

Slično kao Kestrel, Node.js aplikacije su procesi servera koji "slušaju" na portu. Za razliku od klasičnog statičkog sajta (gdje server samo šalje fajl sa diska), Node.js (i ASP.NET) izvršava kod za svaki zahtjev. To omogućava dinamički sadržaj, API pozive i komunikaciju sa bazom u realnom vremenu.

📜 Kratka Historija ASP.NET-a

3. ASP.NET MVC (2009)

Ovo što učimo! Povratak osnovama - potpuna kontrola nad HTML-om, HTTP-om i separacija koda (Model-View-Controller). Odgovor na modernije framework-e kao što je Ruby on Rails.

🕰️ Historija .NET Framework-a

Da bismo razumjeli zašto danas postoje ".NET Framework", ".NET Core" i samo ".NET", moramo pogledati historiju.

.NET Version History Timeline

Evolucija .NET-a: Od Windows-only do Cross-Platform

🔑 Ključne Prekretnice

  • .NET Framework 1.0 - 4.8 (2002-2019): Dizajniran samo za Windows. Stabilan, zreo, ali vezan za OS. Na ovome radi većina starih državnih aplikacija.
  • .NET Core 1.0 - 3.1 (2016-2019): Potpuni "rewrite". Radi na Linuxu, Mac-u i Windowsu. Brži, lakši, modularniji.
  • .NET 5+ (2020-danas): Ujedinjenje. Nema više "Core" u imenu, to je sada samo ".NET". Ovo je budućnost platforme.