MVC Princip i Razlike od WebForms

Modul 1 - Lekcija 1.1

Razumijevanje MVC arhitekture i konfiguracija razvojnog okruženja

📚 Nivo: Početni | 🎯 Praktični primjeri: 5

📖 Uvod u MVC Pattern

Model-View-Controller (MVC) je arhitekturni pattern koji razdvaja aplikaciju u tri glavne komponente: Model (podaci), View (interfejs) i Controller (koordinator).

🔑 Zašto MVC?

Omogućava separation of concerns - svaka komponenta ima jasno definisanu odgovornost. To znači da možete mijenjati View bez uticaja na Model.

📖 Pogledaj Detaljno Objašnjenje →

🏗️ 1. Model (Poslovna Logika i Podaci)

Model predstavlja poslovnu logiku i podatke aplikacije.

  • ✅ Terminologija: Entiteti, ViewModels
  • ✅ Validacija podataka (Data Annotations)
  • ✅ Pristup bazi (Kroz Entity Framework)

                    [Table("Departments", Schema = "Stats")]
                    public class Department {
                    [Key]
                    public int DepartmentID { get; set; }
                    [Required]
                    public string DepartmentCode { get; set; }
                    }
📖 Pogledaj Detaljno Objašnjenje →

🏗️ 2. View (Korisnički Interfejs)

Odgovoran za prikaz podataka korisniku koristeći Razor sintaksu (HTML + C#).

  • ✅ Prikazuje podatke iz Modela
  • ✅ Nema poslovne logike u View-u
  • ✅ Koristi Layout stranice za dizajn

                    @model IEnumerable<Department>
                    <table>
                    @foreach (var dept in Model) {
                    <tr><td>@dept.DepartmentCode</td></tr>
                    }
                    </table>
📖 Pogledaj Detaljno Objašnjenje →

🏗️ 3. Controller (Koordinator)

Prima zahtjeve, komunicira sa Modelom, i vraća View. To je "mozak".


                    public class DepartmentsController : Controller {
                    public ActionResult Index() {
                    var departments = GetDepartmentsFromDb();
                    return View(departments);
                    }
                    }

Odgovornosti:

  • Prima HTTP zahtjeve
  • Poziva Model
  • Odlučuje koji View prikazati (vraća ActionResult)
📖 Pogledaj Detaljno Objašnjenje →

🏛️ Web Forms Nasljeđe

ASP.NET Web Forms pokušao je sakriti stateless prirodu HTTP protokola oponašajući desktop aplikacije.

Mehanizmi Web Forms-a:

  • 🔄 Postback: Slanje podataka nazad na istu stranicu.
  • 📦 ViewState: Ogromno skriveno polje u HTML-u za privid stanja.

⚠️ Problemi Web Forms-a:

"Debeli" ViewState, težak Unit Testing, loš HTML i kontrola, SEO problemi zbog .aspx URL-ova.

📖 Pogledaj Detaljno Objašnjenje →

⚖️ Web Forms vs MVC 5 vs .NET 9

Karakteristika Web Forms MVC 5 .NET 9
Koncept Event-driven Request/Response Modularni API-first
HTML kontrola Ograničena Potpuna (Razor) Potpuna (Tag Helpers)
Testabilnost Jako teška Dobra Odlična (DI)
Platforma Samo Windows Samo Windows Cross-platform
📖 Pogledaj Detaljno Objašnjenje →

🎒 ViewBag vs ViewData vs TempData

Prijenos informacija mimo glavnog Modela.

  • ViewData["Kljuc"] = "Vr"; (Dictionary, zahtijeva cast)
  • ViewBag.Kljuc = "Vr"; (Dynamic objekt, "ljepša" sintaksa)
  • TempData["Kljuc"] = "Vr"; (Dictionary, preživljava jedan Redirect)

Zlatno pravilo: Koristite TempData za poruke nakon preusmjeravanja ("Uspješno!"). Za podatke na istoj stranici koristite ViewModel, a vrlo rijetko ViewBag.

📖 Pogledaj Detaljno Objašnjenje →

📁 Struktura MVC Projekta


                    MyMvcApp/
                    ├── App_Start/ (Konfiguracija aplikacije: Bundle, Route...)
                    ├── Controllers/ (Controller klase, npr. HomeController)
                    ├── Models/ (Model klase)
                    ├── Views/ (Razor view fajlovi)
                    │ ├── Home/ (View-ovi za HomeController)
                    │ └── Shared/ (Zajednički view-ovi: _Layout.cshtml)
                    ├── Global.asax (Globalni event handleri)
                    └── Web.config (Konfiguracija, baze, itd.)

💡 Convention over Configuration:

Konvencije imenovanja kontrolera (završavaju sa "Controller") i mapiranje foldera u Views omogućavaju sistemu automatsko povezivanje bez mnogo konfigurisanja.

📖 Pogledaj Detaljno Objašnjenje →

⚙️ Visual Studio Konfiguracija

Kreiranje ASP.NET Web Application (.NET Framework).

Bitne Mogućnosti:

  • ✅ Odabir MVC template-a
  • ✅ Uključivanje Unit Tests (Preporučeno)
  • ✅ NuGet paketi: Bootstrap, jQuery automatski dodani

🌐 CDN vs Lokalno

Često se postavlja pitanje: Da li koristiti lokalne fajlove ili CDN (Content Delivery Network)?

📖 Pogledaj Detaljno Objašnjenje →

✅ Zaključak

U ovoj lekciji naučili smo:

  • ✅ MVC Pattern i uloge Modela, View-a i Controllera.
  • ✅ Historijske razlike i WebForms i zašto je MVC bolji.
  • ✅ Razliku između .NET Frameworka 5 i modernog .NET 9.
  • ✅ Prijenos podataka preko ViewBaga, ViewData i TempData.
  • ✅ Strukturu ASP.NET MVC projekta.

📚 Sljedeća Lekcija

U Lekciji 1.2 detaljno istražujemo Global.asax, App_Start i kako MVC obrađuje HTTP zahtjeve.