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.
ASP.NET je nástupcem klasické technologie ASP (Active Server Pages):
ASP.NET nabízí několik různých přístupů k vývoji webových aplikací:
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>
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>
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); } }
Zjednodušený model pro menší webové projekty:
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:
ASP.NET poskytuje několik mechanismů pro ukládání stavu:
Integrované bezpečnostní funkce:
[Authorize(Roles = "Admin")] public class AdminController : Controller { public IActionResult Dashboard() { return View(); } }
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; } }
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();
ASP.NET aplikace lze nasadit různými způsoby:
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); } }
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 – 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++;
}
}
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(); });
Techniky pro optimalizaci ASP.NET aplikací: