Obsah

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):

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:

<%@ 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:

// 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:

[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:

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:

Klíčové funkce ASP.NET

Správa stavu

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

Autentizace a autorizace

Integrované bezpečnostní funkce:

[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:

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:

Výhody ASP.NET

Databázový přístup

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

// 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:

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#:

@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í:

Související pojmy

Externí odkazy