Cuando empeceis en el mundillo de ASP.NET una de las primeras cosas que os vais a encontrar es que existen distintos tipos de proyectos que podemos elegir, dependiendo de nuestras necesidades.
De hecho, es una de las cosas que más lía al principio, porque hay una cantidad enorme y es fácil perderse entre tanta opción.
Así que vamos que vamos a ver los principales proyectos en ASP.NET, sus características y cuándo es más adecuado utilizar cada uno.
Aquí tenéis un resumen de los distintos tipos de proyectos de ASP.NET que os vais a encontrar.
Comando | Tipo de Proyecto | Descripción |
---|---|---|
dotnet new web | Vacío | Crea un proyecto vacío |
dotnet new webapi | ✅ API RESTful | Crea una API que sigue el estilo RESTful para servicios web |
dotnet new mvc | ❌ MVC | Crea una aplicación con el patrón Modelo-Vista-Controlador |
dotnet new razor | ❌ Razor Pages | Crea un proyecto con Razor Pages |
dotnet new blazorwasm | Blazor WebAssembly | Crea una aplicación cliente Blazor con WebAssembly. |
dotnet new blazorserver | Blazor Server | Crea una aplicación Blazor Server |
No todos son igual de útiles, ni usados (ni remotamente), y algunos de ellos se mantienen por compatibilidad. En la actualidad que vais a usar con mayor frecuencia son:
- ✅ API RESTFul: Para casi todo
- Blazor: Si quieres desarrollar en esta tecnología
- Proyecto vacío: Para una prueba rápida (o para empezar desde cero)
Pero si queréis más información sobre todos ellos, aquí la tenéis para que los conozcáis y saber cuando conviene usarlos (o no) 👇
Crea un proyecto vacío sin ninguna estructura predeterminada. Esto es útil si deseas crear una aplicación completamente personalizada o si necesitas un control total sobre la configuración del proyecto.
Para crear un proyecto vacío, simplemente ejecuta:
dotnet new web -n MiProyectoVacio
Esto generará un proyecto vacío donde podrás agregar lo que necesites: controladores, vistas, archivos estáticos, servicios, entre otros.
Genera una API RESTful que sigue las convenciones de HTTP, utilizando JSON como formato de intercambio de datos.
Este tipo de proyecto es común para exponer servicios backend, donde no es necesaria una interfaz gráfica, sino que se proporcionan endpoints que pueden ser consumidos por aplicaciones frontend o móviles.
Para crear un proyecto API, usa el siguiente comando:
dotnet new webapi -n MiApi
Cuándo usarlo:
- Servicios web: Si estás desarrollando un backend que será consumido por diferentes clientes.
- Microservicios: Si estás construyendo una arquitectura de microservicios, cada servicio puede ser una API RESTful.
- Aplicaciones SPA: APIs + frontends SPA (React, Angular, Blazor).
Crea un proyecto basado en el patrón Modelo-Vista-Controlador (MVC). Este patrón divide la aplicación en tres componentes principales:
- Modelo (Model): Representa los datos y la lógica de negocio.
- Vista (View): Representa la interfaz gráfica de la aplicación.
- Controlador (Controller): Actúa como intermediario entre el modelo y la vista.
Para crear una nueva aplicación MVC, abre la consola y ejecuta el siguiente comando:
dotnet new mvc -n NombreDeMiAplicacion
Cuándo usarlo:
- Ha sido el clásico durante años.
- A día de hoy, no se usa tanto salvo en aplicaciones existentes (legacy)
Razor Pages fue lanzado con .NET Core 2.0 (2017), promovido por Microsoft como una alternativa más simple a MVC. A diferencia de MVC, no se requiere una separación estricta de controladores y vistas.
Sin embargo, no alcanzó gran popularidad, salvo en proyectos internos, formularios administrativos o entornos donde se busca algo muy sencillo sin meter SPA (React, Angular, Blazor).
Para crear un proyecto con Razor Pages, ejecuta:
dotnet new razor -n MiRazorPageApp
Cuándo usarlo:
- ⛔Si te amenazan con una pistola y no te queda otro remedio… (y aún asi me lo plantearía)
Blazor es un framework de desarrollo de aplicaciones web que permite crear aplicaciones interactivas utilizando C# en lugar de JavaScript.
Blazor puede ejecutarse en el servidor (Blazor Server) o en el cliente (Blazor WebAssembly).
dotnet new blazorserver -n MiAplicacionBlazor
Este comando creará un nuevo proyecto Blazor Server con la estructura básica de carpetas y archivos necesarios.
Cuándo usarlo:
- Aplicaciones interactivas: Si estás desarrollando una aplicación web que requiere una alta interactividad del usuario.
- Aplicaciones SPA (Single Page Application): Si estás construyendo una aplicación de una sola página (SPA) y prefieres utilizar C# en lugar de JavaScript.
Casos de uso comunes
Hemos visto los tipos de proyecto que ofrece ASP.NET. Estos son los “tipos de proyectos de verdad”. Cuando creemos un proyecto tendremos que elegirlo un tipo y no podremos cambiarlo.
Pero no hay que confundir el “tipo de proyecto” de ASP.NET, con lo que podemos hacer con este proyecto (casos de uso)
Ya hemos visto que el tipo de proyecto más potente y versatil es API RESTFul Pero esto no solo podemos hacer APIs con él.
Así que vamos a ver “casos de uso” que podemos realizar con ASP.NET, en solitario, o con otras tecnologías 👇.
Desarrollo de APIs RESTful
El más evidente, y popular de uso de ASP.NET es la creación de APIs RESTful.
Estas APIs son la base de la mayoría de aplicaciones modernas, y permiten la comunicación entre el frontend y el backend, o entre diferentes servicios.
Características clave:
- Soporte nativo para JSON: ASP.NET Core facilita la serialización y deserialización de objetos en JSON, el formato estándar para APIs REST.
- Enrutamiento: Permite definir rutas de manera declarativa, lo que simplifica la creación de endpoints.
- Manejo de verbos HTTP: Soporta métodos como GET, POST, PUT, DELETE, PATCH, entre otros.
Microservicios
ASP.NET es una excelente opción para implementar arquitecturas de microservicios, por su ligereza y rendimiento. Esto lo hace ideal para servicios independientes que se comunican entre sí.
Características clave:
- Contenedores y Docker: ASP.NET Core se integra con Docker, facilitando la creación de imágenes y la gestión de contenedores.
- gRPC: Soporta gRPC para comunicación eficiente entre servicios.
- Escalabilidad: Diseñado para ser escalable horizontal y verticalmente.
Aplicaciones en tiempo real con SignalR
Para aplicaciones que requieren comunicación en tiempo real (como chats o notificaciones instantáneas) ASP.NET Core ofrece SignalR.
Esta biblioteca facilita la implementación de funcionalidades en tiempo real.
Características clave:
- WebSockets: Utiliza WebSockets para comunicación bidireccional.
- Escalabilidad: Soporta múltiples servidores y conexiones simultáneas.
- Integración sencilla: Se integra fácilmente con aplicaciones existentes.
Aplicaciones móviles con backend en ASP.NET
ASP.NET también se utiliza como backend para aplicaciones móviles, proporcionando APIs que pueden ser consumidas por aplicaciones iOS, Android o multiplataforma (como Xamarin o Flutter).
Características clave:
- Autenticación con JWT: Soporta JSON Web Tokens para autenticación segura.
- Escalabilidad: Diseñado para manejar grandes volúmenes de solicitudes.
- Compatibilidad multiplataforma: Funciona en Windows, Linux y macOS.
Aplicaciones de una sola página (SPA)
ASP.NET es compatible con frameworks frontend como React, Angular y Vue.js, lo que lo convierte en una excelente opción para construir aplicaciones de una sola página (SPA).
Características clave:
- Integración con frontend: Soporta la creación de proyectos SPA con plantillas preconfiguradas.
- Rendimiento optimizado: Diseñado para ofrecer un alto rendimiento en aplicaciones SPA.
- Desarrollo full-stack: Permite a los desarrolladores trabajar tanto en el frontend como en el backend.