Uživatelské nástroje

Nástroje pro tento web


asp.net

ASP.NET

ASP.NET je open-source webový framework vyvinutý společností Microsoft pro tvorbu moderních webových aplikací a služeb. Je postaven na .NET Frameworku a umožňuje vývojářům vytvářet dynamické webové stránky, webové aplikace a RESTful API.

Historie a vývoj

ASP.NET je nástupcem klasické technologie ASP (Active Server Pages):

  • ASP.NET 1.0 (2002) – první verze jako součást .NET Frameworku 1.0
  • ASP.NET 2.0 (2005) – master pages, membership systém
  • ASP.NET 3.5 (2007) – zavedení ASP.NET MVC jako alternativa k Web Forms
  • ASP.NET 4.x (2010-2015) – vylepšení výkonu, async/await
  • ASP.NET Core (2016+) – kompletně přepsaný, multiplatformní framework

Hlavní technologie ASP.NET

ASP.NET nabízí několik různých přístupů k vývoji webových aplikací:

ASP.NET Web Forms

Tradiční model vývoje podobný desktop aplikacím:

  • Event-driven programovací model
  • Drag-and-drop ovládací prvky ve Visual Studiu
  • ViewState – automatická správa stavu
  • Server controls – tlačítka, textboxy atd. s událostmi
  • Vhodné pro rychlý vývoj aplikací s formuláři
<%@ Page Language="C#" %>
<!DOCTYPE html>
<html>
<head>
    <title>Příklad Web Forms</title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:Label ID="lblMessage" runat="server" Text="Vítejte!" />
        <asp:Button ID="btnClick" runat="server" Text="Klikni" OnClick="btnClick_Click" />
    </form>
</body>
</html>

ASP.NET MVC

Model-View-Controller pattern pro lepší separaci logiky:

  • Model – datové objekty a business logika
  • View – prezentační vrstva (Razor syntax)
  • Controller – zpracování požadavků a koordinace
  • Plná kontrola nad HTML výstupem
  • Lepší testovatelnost kódu
  • RESTful routing
// Controller
public class HomeController : Controller
{
    public IActionResult Index()
    {
        var model = new HomeViewModel 
        { 
            Message = "Vítejte v ASP.NET MVC!" 
        };
        return View(model);
    }
}
@* View (Razor) *@
@model HomeViewModel
 
<h1>@Model.Message</h1>
<p>Toto je stránka vytvořená v ASP.NET MVC.</p>

ASP.NET Web API

Framework pro tvorbu RESTful webových služeb:

  • Vytváření HTTP služeb dostupných pro různé klienty
  • Automatická serializace do JSON/XML
  • Podpora pro content negotiation
  • RESTful routing
[ApiController]
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
    [HttpGet]
    public IEnumerable<Product> GetAll()
    {
        return _repository.GetAllProducts();
    }
 
    [HttpGet("{id}")]
    public ActionResult<Product> GetById(int id)
    {
        var product = _repository.GetProduct(id);
        if (product == null)
            return NotFound();
        return product;
    }
 
    [HttpPost]
    public ActionResult<Product> Create(Product product)
    {
        _repository.AddProduct(product);
        return CreatedAtAction(nameof(GetById), 
            new { id = product.Id }, product);
    }
}

ASP.NET Web Pages

Zjednodušený model pro menší webové projekty:

  • Kombinace HTML a kódu v jednom souboru
  • Razor syntax pro vkládání C# kódu
  • Jednodušší než Web Forms nebo MVC
  • Vhodné pro jednoduché weby a prototypy

Razor syntaxe

Razor je šablonovací engine pro ASP.NET:

@{
    var jmeno = "Jan";
    var cas = DateTime.Now;
}
 
<h1>Ahoj, @jmeno!</h1>
<p>Aktuální čas: @cas.ToString("HH:mm:ss")</p>
 
@if (cas.Hour < 12)
{
    <p>Dobré ráno!</p>
}
else
{
    <p>Dobrý den!</p>
}
 
<ul>
@foreach (var item in Model.Items)
{
    <li>@item.Name - @item.Price Kč</li>
}
</ul>

Klíčové vlastnosti Razor:

  • Symbol `@` pro přechod mezi HTML a C# kódem
  • IntelliSense podpora ve Visual Studiu
  • Automatické HTML kódování (ochrana proti XSS)
  • Čistá a čitelná syntaxe

Klíčové funkce ASP.NET

Správa stavu

ASP.NET poskytuje několik mechanismů pro ukládání stavu:

  • ViewState – stav mezi postbacky (Web Forms)
  • Session – data specifická pro uživatele
  • Application – data sdílená mezi všemi uživateli
  • Cache – dočasné uložení dat pro výkon
  • Cookies – data na straně klienta
  • TempData – dočasná data mezi požadavky (MVC)

Autentizace a autorizace

Integrované bezpečnostní funkce:

  • ASP.NET Identity – správa uživatelů a rolí
  • Windows Authentication – integrace s Active Directory
  • Forms Authentication – vlastní přihlašovací formuláře
  • OAuth/OpenID Connect – integrace s externími poskytovateli
  • JWT tokens – pro API autentizaci
[Authorize(Roles = "Admin")]
public class AdminController : Controller
{
    public IActionResult Dashboard()
    {
        return View();
    }
}

Validace dat

Podpora pro validaci vstupních dat:

public class RegisterViewModel
{
    [Required(ErrorMessage = "Email je povinný")]
    [EmailAddress(ErrorMessage = "Neplatný email")]
    public string Email { get; set; }
 
    [Required]
    [StringLength(100, MinimumLength = 6)]
    [DataType(DataType.Password)]
    public string Password { get; set; }
 
    [Compare("Password", ErrorMessage = "Hesla se neshodují")]
    public string ConfirmPassword { get; set; }
}

ASP.NET Core

Moderní, multiplatformní verze ASP.NET:

  • Cross-platform – běží na Windows, Linux, macOS
  • Open-source – vyvíjeno veřejně na GitHubu
  • Vysoký výkon – jeden z nejrychlejších webových frameworků
  • Modulární – používáte jen co potřebujete
  • Cloud-ready – optimalizováno pro kontejnery a cloud
  • Unified – sloučení MVC a Web API do jednoho frameworku

Hlavní rozdíly oproti klasickému ASP.NET:

Klasický ASP.NET ASP.NET Core
Pouze Windows Windows, Linux, macOS
Závislost na IIS Samostatný webový server (Kestrel)
System.Web.dll Modulární balíčky
Web.config appsettings.json + kód
Těžký framework Lehký a rychlý
// Program.cs v ASP.NET Core
var builder = WebApplication.CreateBuilder(args);
 
// Přidání služeb
builder.Services.AddControllersWithViews();
builder.Services.AddDbContext<ApplicationDbContext>();
 
var app = builder.Build();
 
// Konfigurace HTTP pipeline
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
 
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");
 
app.Run();

Deployment a hosting

ASP.NET aplikace lze nasadit různými způsoby:

  • IIS (Internet Information Services) – tradiční hosting na Windows Server
  • Azure App Service – cloud hosting od Microsoftu
  • Docker kontejnery – pro ASP.NET Core
  • Linux servery – s Nginx nebo Apache (ASP.NET Core)
  • Self-hosted – vlastní konzolová aplikace s webovým serverem

Výhody ASP.NET

  • Integrace s .NET – přístup ke všem knihovnám .NET ekosystému
  • Výkonnost – kompilovaný kód, caching, async operace
  • Bezpečnost – integrované ochrany proti CSRF, XSS, SQL injection
  • Škálovatelnost – podpora pro load balancing a distribuované aplikace
  • Vývojářské nástroje – vynikající podpora ve Visual Studio
  • Komunita – rozsáhlá dokumentace a aktivní komunita
  • IntelliSense – automatické dokončování kódu
  • NuGet – tisíce dostupných balíčků

Databázový přístup

ASP.NET podporuje různé způsoby práce s databázemi:

  • ADO.NET – nízkoúrovňový přístup k databázím
  • Entity FrameworkORM (Object-Relational Mapping)
  • Dapper – lehký micro-ORM
  • LINQ to SQL – dotazy pomocí LINQ syntaxe
// Entity Framework příklad
public class ApplicationDbContext : DbContext
{
    public DbSet<Product> Products { get; set; }
    public DbSet<Order> Orders { get; set; }
}
 
// Použití v controlleru
public class ProductsController : Controller
{
    private readonly ApplicationDbContext _context;
 
    public ProductsController(ApplicationDbContext context)
    {
        _context = context;
    }
 
    public async Task<IActionResult> Index()
    {
        var products = await _context.Products
            .Where(p => p.IsActive)
            .OrderBy(p => p.Name)
            .ToListAsync();
        return View(products);
    }
}

SignalR

ASP.NET SignalR – knihovna pro real-time webové aplikace:

  • WebSockets podpora
  • Automatický fallback na jiné technologie (long polling, server-sent events)
  • Obousměrná komunikace mezi serverem a klientem
  • Vhodné pro chaty, notifikace, dashboardy
public class ChatHub : Hub
{
    public async Task SendMessage(string user, string message)
    {
        await Clients.All.SendAsync("ReceiveMessage", user, message);
    }
}

Blazor

Blazor – framework pro tvorbu interaktivních webových UI s C#:

  • Blazor Server – UI logika běží na serveru
  • Blazor WebAssembly – C# kód běží přímo v prohlížeči
  • Sdílení kódu mezi klientem a serverem
  • Komponenty napsané v C# místo JavaScriptu
@page "/counter"
 
<h1>Counter</h1>
 
<p>Počet: @currentCount</p>
 
<button @onclick="IncrementCount">Klikni</button>
 
@code {
    private int currentCount = 0;
 
    private void IncrementCount()
    {
        currentCount++;
    }
}

Middleware Pipeline

ASP.NET Core používá middleware pipeline pro zpracování požadavků:

app.Use(async (context, next) =>
{
    // Kód před dalším middleware
    await next.Invoke();
    // Kód po dalším middleware
});
 
app.UseAuthentication();
app.UseAuthorization();
app.UseStaticFiles();
app.UseRouting();
app.UseEndpoints(endpoints => 
{
    endpoints.MapControllers();
});

Výkon a optimalizace

Techniky pro optimalizaci ASP.NET aplikací:

  • Output caching – cache celých stránek nebo částí
  • Response compression – komprese HTTP odpovědí
  • Bundling a minification – spojení a minimalizace CSS/JS
  • CDN – distribuce statických souborů
  • Async/await – asynchronní operace pro lepší škálovatelnost
  • Connection pooling – opakované použití databázových připojení

Související pojmy

Externí odkazy

asp.net.txt · Poslední úprava: autor: admin