MVC
Separa el modelo (datos), la vista (UI) y el controlador (input) en componentes independientes.
Contexto
La arquitectura clásica de UIs y de la mayoría de frameworks web (ASP.NET MVC, Rails, Spring MVC).
Solución
- Model: datos y reglas.
- View: render.
- Controller: recibe input, llama al modelo, elige la vista.
public class OrdersController : Controller
{
private readonly IOrderService _svc;
public OrdersController(IOrderService s) => _svc = s;
public async Task<IActionResult> Detail(Guid id)
{
var order = await _svc.GetAsync(id);
return View(order); // ← vista Razor recibe el modelo
}
}Cuándo NO aplicarlo
- En SPAs: el controller del backend ya no controla la vista. Considera MVVM o Backend-for-Frontend.
#Dónde se usa
Web server-side con vistas renderizadas en el servidor (ASP.NET MVC, Rails, Spring MVC, Django en su variante MTV). Para apps con estado de UI persistente (mobile, desktop) suele ser mejor MVVM.
MVC es un patrón de presentación, no de aplicación completa. Un controller gordo con lógica de negocio es el error más común: el negocio va en Application/Domain, no en el controller.
#architecture #ui