UVOD ASP.NET CORE WEB APLIKACIJE

U ovom poglavlju naći ćete članke o tome šta je web server(HTTP web server), kako se kreira jednostavan web server, a kako web aplikacija. Šta je web servis i primer kreiranja web servisa. Takođe ćete naći članke o Web Api servisima jednostavnim i onim koji čitaju podatke iz baze, npr. SQL Server baze podataka. Kroz primere možete naučiti kako se kreira WEB Api sa kontrolerom i modelom.

Uvod u ASP.NET Core veb aplikacije

ASP.NET Core je moderni framework za razvoj web aplikacija koji omogućava kreiranje brzih, skalabilnih i sigurnih web rešenja. Razvijen od strane Microsofta, ovaj framework nudi sveobuhvatan set alata i funkcionalnosti koje omogućavaju programerima da kreiraju aplikacije visokih performansi. Međutim, da bi se bolje razumelo šta ASP.NET Core može da postigne, važno je pogledati konkretne primene u stvarnom svetu.
Na primer, Stack Overflow, jedna od najpopularnijih platformi za postavljanje i odgovaranje na pitanja vezana za programiranje, koristi ASP.NET Core za delove svoje infrastrukture. Ova platforma koristi snagu ASP.NET Core-a kako bi osigurala brze reakcije i efikasno upravljanje velikim količinama podataka i korisnika.
Drugi primer je Microsoft Teams, alat za kolaboraciju i komunikaciju unutar kompanija. Iako Teams koristi više tehnologija, ASP.NET Core je korišćen za izgradnju određenih delova aplikacije, omogućavajući skalabilnost i pouzdanost koja je ključna za ovakve vrste softverskih rešenja.
Reddit je još jedan primer web aplikacije koja koristi ASP.NET Core za svoje API-je. Ova platforma koristi ASP.NET Core da bi osigurala brzinu i efikasnost pri rukovanju velikim količinama zahteva od korisnika širom sveta.
Ovi primeri pokazuju snagu i fleksibilnost ASP.NET Core-a u različitim kontekstima i industrijama. Kroz rad sa ovim framework-om, programeri mogu graditi aplikacije koje su ne samo funkcionalne, već i visoko optimizovane za rad u stvarnom svetu.
Neke od ključnih prednosti ASP.NET Core-a uključuju:

Brzina: ASP.NET Core je poznat po brzoj obradi zahteva i optimizovanoj upotrebi memorije, što ga čini idealnim za kreiranje aplikacija visokih performansi.

Podrška za više platformi:
Sa ASP.NET Core programeri mogu da prave i pokreću veb aplikacije na Vindovs, macOS i Linuks, pružajući fleksibilnost za različita okruženja.

Modularnost:
Prati modularnu strukturu okvira, omogućavajući programerima da izaberu i odaberu komponente koje su im potrebne, minimizirajući naduvanost i složenost aplikacije.

Pogodno za DevOps:
Besprekorna integracija sa modernim DevOps praksama, kao što su neprekidna integracija i kontinuirana primena (CI/CD), čini ga odličnim izborom za agilne razvojne timove.
​
 Bezbednost: ASP.NET Core pruža napredne funkcije kao što su ugrađena autentifikacija, autorizacija i zaštita podataka, koje su ključne za moderne veb aplikacije. Ovi kvaliteti su pozicionirali ASP.NET Core kao vitalni alat za programere koji žele da izgrade pouzdane, skalabilne veb aplikacije koje su otporne na budućnost.

Arhitektura ASP.NET Core:

Sledeći dijagram ilustruje tipičnu arhitekturu ASP.NET Core aplikacije:
[Klijent] --> [Middleware] --> [Rutiranje] --> [Kontroler] --> [View] ili [Pristup podacima] --> [Baza podataka]

Video: ASP.NET Core - jednostavna web aplikacija

Šta je to web servis, kako da kreirate web api u asp.net core tehnologiji? Pročitajte više o tome na webstrani:
Implementacija web servisa

Šta je to web server?

Web server je aplikacija koja može da komunicira sa web pregledačem (klijentom). Ako pomoću Web klijenta u ovom slučaju pregledač(npr Crome-a) u njegovoj traci za adrese(adress bar engl.) ukucamo neku URL adresu npr. http//localhost:5000 i ako postoji aplikacija ili proces koji će na ovakav zahtev odgovoriti i poslati nazad(pregledaču) neku poruku kao odgovor na to možemo reći da je reč o web serveru(http serveru). Lokacija te aplikacije može biti bilo gde na webu tj. može biti na istom računaru ili na nekom udaljenom računaru, laptopu, mobilnom telefonu ili pravom web serveru, bitno je da ona(web aplikacija) može da komunicira sa web pregledačem i da odgovara na njegove zahteve.
Kako bismo kreirali web sajt ili aplikaciju, prvo je potrebno preuzeti i instalirati ASP.NET Core na lokalnom računaru.
Može se preuzeti sa web lokacije:
​
​https://dotnet.microsoft.com/en-us/download/dotnet

ASP.Net core download-stranica za preuzimanje
Slika 1. ASP.Net core download- stranica za preuzimanje
Ono što je potrebno je da se sa ove web strane preuzme neka od ponuđenih, najbolje preporučena verzija asp.net core framework-a. Važno je napomenuti da, nakon verzije 3.1, naziv 'core' više nije deo imena, ali tehnologija ostaje ista.
Asp.net core je multiplatformska za razliku od asp.net pomoću kojeg se mogu praviti web aplikacije samo na windows operativnom sistemu.
Da bi se kreirala dotnet web aplikacija nije potreban dodatni alat za programiranje i ako je mnogo lakše programirati korišćenjem nekog od dostupnih alata. Web aplikacija u dotnet tehnologije može se kreirati pomoću skupa komandi koje se izvršavaju u dotnet tehnologiji poznate kao dotnet CLI(Command Line Interface). Skup potrebnih komandi možete pronaći na sledećoj web lokaciji: 
docs.microsoft.com/en-us/dotnet/core/tools/dotnet
Više o svemu tome pogledajte u priloženom videu.


Sledeće što je poželjno, ali ne i „obavezno je instaliranje nekog od pomoćnih alata npr „VS code“ ili „Microsoft Visual Studio".
U ovom tutorijalu će biti korišćen VS Code. Može se preuzeti sa sledećeg linka:

code.visualstudio.com/download

Više o alatima

U ovoj sekciji ćemo detaljnije razmotriti dva popularna alata za razvoj u ASP.NET Core: Visual Studio Code i Visual Studio. Ova dva alata, iako slična u funkcionalnosti, nude različite karakteristike koje ih čine pogodnim za različite vrste projekata i potreba.
Visual Studio CodeVisual Studio Code (VS Code) je lagan, otvorenog koda editor koji je vrlo popularan među programerima zbog svoje brzine i fleksibilnosti. Ključne karakteristike VS Code uključuju:Preporučuje se za manje projekte, brzu izmenu koda i za one koji preferiraju minimalističko radno okruženje koje se može lako prilagoditi.
Visual StudioVisual Studio je robusna i sveobuhvatna IDE (Integrated Development Environment) koja nudi mnogo više funkcionalnosti u odnosu na Visual Studio Code. Ključne karakteristike Visual Studio uključuju:Preporučuje se za velike projekte, timski rad i za profesionalce koji zahtevaju sveobuhvatne alate i funkcionalnosti za razvoj.
ZaključakIzbor između Visual Studio Code i Visual Studio zavisi od vaših potreba i vrste projekta na kojem radite. Ako tražite lagan i prilagodljiv editor za brzi razvoj, Visual Studio Code je odličan izbor. S druge strane, ako vam je potrebna sveobuhvatna IDE sa naprednim funkcijama, Visual Studio će vam pružiti sve što vam je potrebno.

Da bi smo kreirali aplikaciju pomoću dotnet core kreirajmo prvo folder aplikacije npr. na putanji
​ c://aspdotnetcore/Products
​aspdotnet core-Command Prompt
Slika 2: aspdotnet core-Command Prompt
​Da bi ste proverili koja je verzija dotnet core instalirana:Aspdotnet core-Command Prompt. Provera instalirane verzije
Slika 3: Aspdotnet core-Command Prompt. Provera instalirane verzije
​Na slici se vidi da je instalirana verzija 5.0, ali u slučaju da nije ni jedna potrebno je neku od asp.net core verzija instalirati.
Da bi kreirali veb sajt pod imenom Products, u okviru istoimenog foldera treba otkucati:
dotnet new web
što se može videti na sledećoj slici:Aspdotnet core-Kreiranje nove web aplikacije
Slika 4: Aspdotnet core-Kreiranje nove web aplikacije
Kreiraće se struktura potrebnih fajlova unutar root foldera aplikacije:
Aspdotnet core-Struktura potrebnih fajlova u root folderu
Slika 5: Aspdotnet core-Struktura potrebnih fajlova u root folderu
Da bi se startovala upravo kreirana aplikacija potrebno je u okviru command prompt-a otkucati:
dotnet run ,
kao što se može videti na sledećoj slici:Asp dotnet core-Startovanje kreirane aplikacije sa komandom:
Slika 6: Aspdotnet core-Startovanje kreirane aplikacije sa komandom: "dotnet-run"
Na prethodnoj slici se može videti i URL koji treba otvoriti u pregledaču da bi se pokrenula aplikacija „Products“.
Posle pokretanja u pregledaču će se prikazati poruka „Hello World“:
Picture
​Da bi se promenio kod u okviru aplikacije potrebno je prvo isljučiti aplikaciju, kucanjem ctrl+C, a zatim pokrenuti VS Code, pomoću komande:

code .
​Posle pokretanja videće se sadržaj projekta, što je prikazano na slici:
Aspdotnet core-Sadržaj projekta u VS Code okruženju
Slika 7: Aspdotnet core-Sadržaj projekta u VS Code okruženju
Da bi smo npr. prikazali sistemsko vreme umesto poruke „Hello World“, potrebno je izmeniti MapGet metodu:Aspdotnet core-Sadržaj projekta u VS Code okruženju-drugi deo
Slika 8: Aspdotnet core-Sadržaj projekta u VS Code okruženju-drugi deo
Da bi smo npr prikazali sistemsko vreme umesto poruke „Hello World“, potrebno je izmeniti MapGet() metodu:Aspdotnet core aplikacija primer-Prikaz sistemskog vremena
Slika 7: Aspdotnet core aplikacija primer-Prikaz sistemskog vremena

Detaljnije objašnjenje Web Api-ja

ASP.NET Core pruža moćan okvir za razvoj RESTful Web API-ja, što omogućava kreiranje aplikacija koje mogu da komuniciraju sa drugim aplikacijama putem HTTP protokola. U ovom delu ćemo detaljnije razmotriti kako se ASP.NET Core koristi za razvoj Web API-ja, fokusirajući se na ključne komponente kao što su kontroleri, modeli i CRUD operacije.

Kontroleri

U ASP.NET Core, kontroleri su centralni deo za upravljanje HTTP zahtevima. Oni služe kao most između korisničkog interfejsa i podataka koji se obrađuju. Kontroleri u ASP.NET Core su klase koje nasledjuju ControllerBase klasu i koriste atribute kao što su [ApiController] i [Route] za definisanje rute i pravila za obrada zahteva.

Primer Kontrolera:

using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("api/[controller]")]
public classProductsController : ControllerBase
{
private readonly IProductService _productService;

public ProductsController(IProductService productService)
    {
_productService = productService;
    }

    [HttpGet]
public IActionResult GetAll()
    {
var products = _productService.GetAllProducts();
return Ok(products);
    }

    [HttpGet("{id}")]
public IActionResult GetById(int id)
    {
var product = _productService.GetProductById(id);
if (product == null)
        {
return NotFound();
        }
return Ok(product);
    }

    [HttpPost]
public IActionResult Create(Product product)
    {
varcreatedProduct = _productService.CreateProduct(product);
return CreatedAtAction(nameof(GetById), new { id = createdProduct.Id }, createdProduct);
    }

    [HttpPut("{id}")]
public IActionResult Update(int id, Product product)
    {
if (id != product.Id)
        {
return BadRequest();
        }
_productService.UpdateProduct(product);
return NoContent();
    }

    [HttpDelete("{id}")]
public IActionResult Delete(int id)
    {
_productService.DeleteProduct(id);
return NoContent();
    }
}

Modeli

Modeli su klase koje predstavljaju podatke koje vaš API koristi. Oni često odražavaju strukturu podataka u bazi podataka ili druge podatke koje vaša aplikacija koristi. Modeli se obično koriste za primanje i slanje podataka između klijenta i servera.

Primer modela

public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
public string Description { get; set; }
}

CRUD operacije 

CRUD operacije (Create, Read, Update, Delete) su osnovne funkcionalnosti koje svaki Web API treba da podržava. Ove operacije omogućavaju kreiranje novih zapisa, čitanje postojećih zapisa, ažuriranje i brisanje podataka.Svaka od ovih operacija se mapira na HTTP metode i koriste se u kontrolerima za interakciju sa modelima i servisima.

Zaključak

Korišćenje ASP.NET Core za razvoj Web API-ja omogućava efikasno upravljanje podacima i omogućava aplikacijama da komuniciraju preko HTTP-a. Razumevanje kako da pravilno koristite kontrolere i modele, kao i kako da implementirate CRUD operacije, ključno je za izgradnju robusnih i skalabilnih Web API-ja.

Primeri koda: ToDo kontroler

// Primer kontrolera za upravljanje korisnicima
[ApiController]
[Route("api/[controller]")]
public class UsersController : ControllerBase
{
private readonly ApplicationDbContext _context;

public UsersController(ApplicationDbContext context)
    {
        _context = context;
    }

    [HttpGet]
public async Task<ActionResult<IEnumerable<User>>> GetUsers()
    {
return await _context.Users.ToListAsync();
    }

    [HttpPost]
public async Task<ActionResult<User>> PostUser(User user)
    {
        _context.Users.Add(user);
        await _context.SaveChangesAsync();
return CreatedAtAction(nameof(GetUsers), new { id = user.Id }, user);
    }
}
TodoController Primer
​
U ovom primeru koristimo ASP.NET Core za kreiranje jednostavnog API kontrolera koji upravlja listom zadataka (TodoItem). TodoController omogućava osnovne operacije: čitanje, dodavanje, ažuriranje i brisanje zadataka.

Detaljno Objašnjenje: Svi primeri koda prikazuju kako ASP.NET Core omogućava brzo i efikasno kreiranje RESTful API-ju, sa jednostavnim pristupom osnovnim operacijama na podacima.

Preporuke za dalje učenje

Na kraju stranice, uključivanje linkova ka korisnim resursima može pomoći čitateljima da prodube svoje znanje o ASP.NET Core-u. Preporučeni resursi mogu uključivati:
​

Srodni članci

​Kreiranje web aplikacija
Kreiranje web sajta
Kreiranje Python web aplikacije
Grafika u Javi