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.
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.
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]
- Klijent: Korisnik šalje zahtev putem web pregledača ili aplikacije.
- Middleware: Zahtev prolazi kroz niz middleware komponenti koje obavljaju zadatke poput logovanja, autentifikacije i rukovanja greškama.
- Rutiranje: Okvir usmerava zahtev ka odgovarajućem kontroleru.
- Kontroler: Kontroler obrađuje zahtev i može vratiti prikaz (View) ili pristupiti podacima iz baze.
- Pristup podacima: Entity Framework Core omogućava kontroleru da pristupa i manipuliše podacima u bazi 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
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
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
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.
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
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:
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:
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.
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:
- Lagan i Brz: Kao editor, VS Code je dizajniran da bude brz i efikasan. Ovo ga čini odličnim za manje projekte i za brzu kodiranje.
- Prilagodljivost: VS Code podržava brojne ekstenzije koje možete dodati kako biste prilagodili radno okruženje prema svojim potrebama. To uključuje podršku za različite programske jezike, alate za debagovanje, i još mnogo toga.
- Multiplatformski: Dostupan je za Windows, macOS i Linux, što omogućava rad u različitim okruženjima.
- Integracija sa Git: Ima ugrađenu podršku za rad sa Git repozitorijumima, što olakšava upravljanje verzijama koda.
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:
- Kompletan Razvojni Alat: Visual Studio pruža sveobuhvatne alate za razvoj, uključujući napredne mogućnosti za debagovanje, profilišući alate, i vizuelni dizajner za korisničke interfejse.
- Integrisani Alati: Ima integraciju sa brojnim alatima i tehnologijama koje olakšavaju rad na velikim i kompleksnim projektima, kao što su baze podataka, serveri i cloud servisi.
- Podrška za Više Jezika: Pored C# i ASP.NET Core, Visual Studio podržava mnoge druge programske jezike i tehnologije, što ga čini pogodnim za raznovrsne projekte.
- Opcije za Profesionalce: Verzija Visual Studio Professional i Enterprise dolazi sa dodatnim alatima i podrškom koja je korisna za velike timove i složene projekte.
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
Da bi ste proverili koja je verzija dotnet core instalirana:
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:
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:
Kreiraće se struktura potrebnih fajlova unutar root foldera aplikacije:
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:
dotnet run ,
kao što se može videti na sledećoj slici:
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:
Da bi smo npr. prikazali sistemsko vreme umesto poruke „Hello World“, potrebno je izmeniti MapGet metodu:
Da bi smo npr prikazali sistemsko vreme umesto poruke „Hello World“, potrebno je izmeniti MapGet() metodu:
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 class ProductsController : 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)
{
var createdProduct = _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();
}
}
[ApiController]
[Route("api/[controller]")]
public class ProductsController : 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)
{
var createdProduct = _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; }
}
{
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.
- Create (Post): Dodaje nove podatke u sistem.
- Read (Get): Dohvata podatke iz sistema.
- Update (Put): Ažurira postojeće podatke.
- Delete (Delete): Briše podatke iz sistema.
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);
}
}
[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:
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:
- [ApiController] Atribut: Ovaj atribut označava da je klasa API kontroler i omogućava automatsko model binding i validaciju. Takođe omogućava da se rezultati automatski formatiraju u JSON.
- [Route("api/[controller]")] Atribut: Ovaj atribut definiše putanju URL-a za pristup kontroleru. U ovom slučaju, api/todo je putanja koja vodi do TodoController.
- GetTodos Metoda: Ova metoda vraća sve zadatke iz liste. Koristi IActionResult kao povratni tip koji omogućava vraćanje različitih HTTP status kodova.
- GetTodoById Metoda: Ova metoda vraća zadatak sa specifičnim ID-jem. Ako zadatak nije pronađen, vraća NotFound() status.
- CreateTodo Metoda: Ova metoda dodaje novi zadatak u listu. Koristi Post atribut da označi da prihvata POST zahteve. Ako je model validan, novi zadatak se dodaje i vraća CreatedAtAction sa statusom 201 Created.
- UpdateTodo Metoda: Ova metoda ažurira postojeći zadatak. Ako zadatak sa datim ID-jem nije pronađen, vraća NotFound() status.
- DeleteTodo Metoda: Ova metoda briše zadatak sa specifičnim ID-jem. Ako zadatak nije pronađen, vraća NotFound() status.
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: