¿Qué es ASP.NET?
ASP.NET es un framework de desarrollo web del lado del servidor creado por Microsoft y altamente desarrollado. ASP.NET se utiliza para crear páginas web dinámicas, aplicaciones web y servicios basados en web. Después de décadas de desarrollo, el framework sigue existiendo bajo el nombre de ASP.NET Core.
Historia de desarrollo de ASP.NET
Desarrollado originalmente por Microsoft, ASP.NET ahora depende de la .NET Foundation. Si bien las primeras versiones se publicaron como software propietario, el ASP.NET moderno es un proyecto de código abierto.
El ASP.NET que se utiliza hoy en día es el resultado de décadas de desarrollo, una trayectoria que comenzó con ASP para pasar a ASP.NET y, finalmente, a ASP.NET Core. En consonancia con los avances de la tecnología web, el framework ha ido cambiando drásticamente a lo largo de los años. Primero, vamos a echar un vistazo a la historia del desarrollo de ASP.NET:
Tecnología | Entorno de desarrollo | Versión actual | Extensiones de archivo |
---|---|---|---|
ASP | Windows | 3.0/2000-02 | .asp |
ASP.NET | Windows | 4.8/2019-04 | .aspx/.aspx.cs, .aspx.vb etc. |
ASP.NET Core | Multiplataforma | 5.0/2020-11 | .cshtml, .vbhtml, etc. |
¿No tienes conocimientos de programación y quieres crear tu propia página web? Te será muy fácil con el editor para crear páginas web MyWebsite de IONOS.
Active Server Pages (ASP): el primer lenguaje de scripting del lado del servidor de Microsoft
El Active Server Pages (ASP) original fue el primer lenguaje de scripting del lado del servidor publicado por Microsoft. Lanzado en 1996, Active Server Pages permitía crear páginas web en el servidor de manera dinámica. Otros lenguajes de secuencias de comandos suelen depender de Linux como sistema operativo y de un servidor web de código abierto, como Apache. Por el contrario, Microsoft posicionó Active Server Pages como parte del Internet Information Server (IIS), que se ejecuta en Windows.
La funcionalidad básica de ASP puede compararse con la de PHP o la de Java Server Pages (JSP). En las tres tecnologías se utilizan archivos de plantilla, que contienen fragmentos de código ejecutables incrustados en contenido HTML estático. El código se escribe entre etiquetas especiales para separarlo del HTML. Los dialectos específicos de Microsoft disponibles en aquel momento, VBScript, JScript y PerlScript, se utilizaban como lenguajes de programación.
Cuando el navegador accede a una URL (“request”), el código se ejecuta en el servidor. La ejecución genera contenido HTML que se inserta en las estructuras HTML predefinidas. En general, el resultado es un documento que consta de contenido HTML estático y generado dinámicamente, y que se entrega como una respuesta al navegador (“response”) y se muestra al usuario. Cualquier cambio en el contenido de la página, por ejemplo, debido a las entradas del usuario, requería un ciclo completo de request-response y, por lo tanto, que se volviera a cargar la página. A continuación, se muestra un ejemplo de código ASP:
<p>
The server’s current time:
<%
Response.Write Now()
%>
</p>
ASP todavía no era un framework. Por el contrario, empleaba unos pocos objetos sueltos sin relación entre sí. A partir de ellos, se tejía un sitio web dinámico:
- Application
- Request
- Response
- Server
- Session
- ASPError
ASP.NET: de Active Server Pages al framework
ASP.NET, el sucesor del ASP clásico, se presentó en el año 2003. En lugar de unos pocos objetos sueltos, utilizaba el framework .NET como una subestructura que englobaba los procesos que se requerían con frecuencia, como el acceso a las bases de datos o la autenticación y la autorización de usuarios. En conjunto, ASP.NET podría compararse a frameworks de Java como Struts o Spring.
ASP.NET incluía los formularios Web Forms como característica decisiva. El enfoque de Web Forms permitía a los desarrolladores de Windows experimentados programar páginas web dinámicas. Los mecanismos subyacentes a la web permanecían ocultos a los desarrolladores, que podían seguir recurriendo a los flujos de trabajo y entornos de desarrollo que les eran familiares. En particular, se utilizaban herramientas visuales específicas de Microsoft para el desarrollo rápido de aplicaciones o Rapid Application Development (RAD).
Los formularios Web Forms permitían a los desarrolladores de Windows avanzar rápidamente con la programación web. Sin embargo, al mismo tiempo, el enfoque limitaba el grado de control sobre las páginas HTML entregadas. Poco tiempo después, con ASP.NET MVC, se introdujo un modelo de desarrollo alternativo. Este seguía el patrón establecido de modelo-vista-controlador (MVC) y permitía implementar de manera más limpia el principio de la separación de intereses (separation of concerns). Basado en el innovador marco Ruby on Rails, ASP.NET MVC ofrecía una buena funcionalidad para el andamiaje de los proyectos.
Actualmente, ASP.NET ha sido reemplazado por ASP.NET Core, el desarrollo posterior. Sin embargo, ambos nombres se utilizan a menudo como sinónimos.
ASP.NET Core: nuevo desarrollo basado en código abierto
Con el lanzamiento de ASP.NET Core, la organización del framework cambió por completo. A medida que Microsoft continuaba con su tendencia hacia el código abierto, el desarrollo de ASP.NET Core se puso bajo los auspicios de la .NET Foundation. El código fuente del proyecto está disponible bajo una licencia de código abierto.
A nivel técnico, ASP.NET Core es una versión rediseñada de ASP.NET 4.0, que aúna los componentes de ASP.NET que han ido surgiendo orgánicamente. El framework hace posible el desarrollo de proyectos con ASP.NET Core y el hosting fuera del ecosistema de Windows. En Windows, ASP.NET Core se basa en el framework .NET, mientras que, en otros sistemas operativos, se utiliza el framework .NET Core.
De acuerdo con los avances en la tecnología web, ASP.NET Core es compatible con el uso en la nube. Además del tradicional Internet Information Server (IIS) de Microsoft, como entorno de alojamiento de ASP.NET se utilizan contenedores y entornos de servidor abiertos. El framework admite código del lado del cliente y enfoques modernos para la programación reactiva. Esto significa que ASP.NET Core es comparable a frameworks basados en JavaScript como React.
¿Para qué proyectos es adecuado ASP.NET?
Con el framework ASP.NET se pueden implementar proyectos web de todo tipo. En particular, es adecuado para páginas web dinámicas y aplicaciones web, incluidas las aplicaciones de página única o single page app (SPA). También se pueden implementar servicios basados en web, como API y sistemas para comunicación en tiempo real. A lo largo de los años, el entorno se ha utilizado con diversos enfoques para diferentes fines. A continuación, los veremos con más detalle y resumiremos su trayectoria.
Modelos de programación en ASP.NET
Con el avance de las tecnologías web a partir de la década de 2000, se han ido incorporando nuevos enfoques al desarrollo web en ASP.NET. Imagínatelos como una caja de herramientas bien organizada, con diferentes herramientas disponibles para cada tipo de proyecto. Dependiendo de los requisitos, se pueden combinar varios enfoques en un mismo proyecto. Con el lanzamiento de ASP.NET Core, numerosos modelos de programación desarrollados de manera orgánica se reunieron bajo un mismo framework, lo que ayudó a simplificar la elección del enfoque más adecuado para cada situación.
ASP.NET Web Forms
Con el clásico Web Forms, las páginas se ensamblan a partir de componentes predefinidos. Se utilizan unos módulos de formularios de aspecto visual y cada componente se coloca mediante la función de arrastrar y soltar. Esto les resultaba especialmente atractivo a los desarrolladores con experiencia programando en Windows, ya que les permitía utilizar las herramientas para el desarrollo rápido de aplicaciones (RAD) con las que estaban familiarizados, con la diferencia de que el producto final no era una aplicación de Windows, sino una página web dinámica.
El enfoque de Web Forms se basa en el modelo de código subyacente (code-behind) de Microsoft, que obliga a seguir el principio de la separación de intereses:
- Los archivos de plantilla con la extensión .aspx definen la estructura HTML de la página y contienen marcadores de posición para el contenido generado dinámicamente.
- La propia lógica de la aplicación se transfiere a un archivo separado con la extensión .aspx.cs o .aspx.vb. Se trata del archivo code-behind del mismo nombre.
- El cliente recupera el archivo .aspx disponible en una URL. Los componentes estáticos y dinámicos se combinan en el servidor. El documento HTML resultante se entrega al cliente.
- Con cada entrada del usuario en la página, los datos se transfieren a la misma URL a través de una solicitud GET o POST y se procesan mediante el archivo code-behind.
Se adopta un enfoque orientado a objetos para implementar la lógica de la aplicación: el archivo code-behind define una clase derivada. El lenguaje de programación utilizado suele ser C# o Visual Basic. Es interesante que el archivo code-behind se precompile solo una vez, lo que conlleva una ejecución más rápida y una mayor resistencia frente a errores cuando se llama a la página.
ASP.NET MVC
En contraposición con el ASP original, los formularios Web Forms representaban un paso decidido hacia la separación de intereses. Con ASP, los componentes de código y HTML estático se combinaban en un solo archivo. En cambio, con Web Forms, se producía una separación entre el archivo de plantilla y el archivo code-behind. Con ASP.NET MVC, se añadió otro modelo de programación a ASP.NET, que permitía el desarrollo web basado en el patrón de modelo-vista-controlador (MVC).
El patrón MVC distingue entre la lógica de la aplicación (“modelo”), la plantilla de visualización (“vista”) y la interacción del usuario (“controlador”). Una de las ventajas del enfoque de MVC es que cada concepto se puede someter mejor a pruebas. Además, la separación de intereses permite utilizar diferentes controladores. En lugar de enviar toda la entrada del usuario a un único URL y volver a cargar la página, se usa AJAX a través de jQuery, por ejemplo. Esto permite que se vuelvan a cargar partes de la página. Con ASP.NET Core MVC, la tradición de ASP.NET MVC se perpetúa en la versión actual del framework.
ASP.NET Web Pages
ASP.NET Web Forms y ASP.NET MVC son adecuados para desarrollar páginas web complejas. Si necesitas varias páginas con componentes reutilizables, ambos modelos de programación son ideales. Pero ¿y si no las necesitas? Supongamos que queremos crear una página web sencilla que conste de una sola página o solo unas pocas. Hay algunos componentes dinámicos, pero la atención se centra más en un diseño sofisticado que en una lógica de aplicación compleja y en el procesamiento de la entrada del usuario. En este caso, sería excesivo definir clases propias o esforzarse en la separación de acuerdo con el modelo MVC.
ASP.NET Web Pages es ideal para los casos en que la lógica de la aplicación tiene menos protagonismo que un diseño y una presentación sofisticados. En este modelo, similar al PHP o al ASP clásico, dentro del archivo se combinan estructuras HTML estáticas y componentes de código dinámico. Para ello se utiliza una sintaxis especial. ASP.NET Web Pages es especialmente adecuado para crear páginas de aterrizaje (en inglés, landing pages).
ASP.NET Web API
Todos los modelos de programación presentados hasta ahora tienen como objetivo generar contenido HTML para el usuario humano. Además, ASP.NET Framework contiene modelos que se utilizan para proporcionar una infraestructura para los proyectos web. ASP.NET Web API es un modelo de programación para crear API REST. El acceso a los puntos finales de la API se realiza a través de AJAX. Como formato para la transmisión de datos, se utiliza JSON o XML.
ASP.NET WebHooks
ASP.NET WebHooks es una implementación del patrón WebHooks. Los webhooks permiten publicar y suscribirse a eventos que tienen lugar en un sistema. Puede tratarse, por ejemplo, de cargar un archivo o recibir un pago. Un suscriptor registra el cambio, que se rastreará con el sistema de publicación. Para ello, transfiere una URL: el WebHook del mismo nombre. Cuando tiene lugar el evento registrado, el sistema de publicación llama al WebHook y el suscriptor es informado del evento.
SignalR
SignalR es un marco para la comunicación en tiempo real entre cliente y servidor. Este framework se basa en el estándar WebSockets y permite la transferencia bidireccional de datos. Los navegadores que no son compatibles con WebSockets pasan a ser gestionados por mecanismos de reserva. SignalR suele utilizarse para implementar servicios de chat basados en navegador y software de videoconferencias.
Nuevos modelos de programación en ASP.NET Core
ASP.NET Core es el sucesor de ASP.NET. El framework ASP.NET Core fue reescrito por completo, pero es altamente compatible con su predecesor. Los componentes de ASP.NET anteriormente separados se han fusionado en la versión Core. Además, algunos componentes se han desarrollado desde cero, manteniendo los nombres que tenían en la versión anterior. Por ello, el framework SignalR existe tanto en ASP.NET como en ASP.NET Core. Vamos a echar un vistazo a las principales novedades que ha aportado el desarrollo de ASP.NET Core.
ASP.NET Core MVC: sitios de modelo-vista-controlador basados en API
Con ASP.NET Core MVC, se han combinado las funcionalidades de ASP.NET MVC y ASP.NET Web API. De esta manera, se pueden desarrollar aplicaciones web altamente dinámicas con una interfaz de usuario modular y una API subyacente. En el proceso, el framework .NET Core se utiliza como una subestructura común. Los conocidos enfoques de .NET para el desarrollo con API se pueden aplicar al desarrollo con MVC y viceversa.
Razor Pages: evolución de ASP.NET Web Pages
Razor Pages cubre un nicho similar al que cubría ASP.NET Web Pages en el pasado. Conviene utilizarlo cuando el patrón de modelo-vista-controlador supone una sobrecarga innecesaria. Si, por ejemplo, se quiere crear una página de aterrizaje, con Razor Pages se puede implementar de manera fácil. La sintaxis de Razor se utiliza para crear la plantilla de la página. Como es habitual en el universo .NET, se puede emplear C# y Visual Basic como lenguajes de programación.
Vamos a ver un ejemplo de una Razor Page. Cabe destacar que, como signo de apertura, se utiliza @ en lugar de las etiquetas de código de apertura y cierre habituales en los lenguajes de plantillas:
@page
@model HelloWorldModel
@if (Name != null) {
<p>Hello dear @Name</p>
}
<form method="post">
<p>
<label asp-for="Name"></label>
<input class="form-control" asp-for="Name" />
</p>
<input type="submit" value="Say Hello" />
</form>
Programación reactiva con Blazor: “.NET in the browser”
El framework Blazor se basa en la sintaxis de Razor antes mencionada; de hecho, el nombre de Blazor proviene de “Browser + Razor”. Como sugiere el nombre, Blazor se centra en el navegador como entorno de ejecución. Con Razor Pages, las interacciones del usuario se procesan en el servidor. Blazor, por su parte, permite la programación reactiva, en la que cada componente de la página reacciona dinámicamente a los cambios en el navegador. Esto hace que Blazor sea más o menos comparable a las tecnologías React, Angular y Vue.
A continuación, te mostramos un ejemplo sencillo de programación reactiva con Blazor. Vinculamos el valor de un campo de entrada a la variable “name”. Se utiliza la sintaxis de Razor:
@page "/"
<h1>A Blazor example</h1>
<p>Welcome to Blazor, @Name.</p>
<input bind="@Name" type="text" class="form-control" placeholder="Name" />
Además de la programación reactiva, hay otra característica de Blazor que resulta muy interesante: a través de WebAssembly, los lenguajes .NET se pueden compilar para ser ejecutados en el navegador. Por lo tanto, a menudo se hace referencia a la expresión “.NET in the browser” cuando se habla de Blazor. La ventaja es que el código del lado del cliente no tiene que escribirse en JavaScript. En cambio, el desarrollo se realiza en C# o Visual Basic. El código puede acceder a los conocidos componentes del framework .NET.
¿Cuáles son las ventajas e inconvenientes de ASP.NET?
Con ASP.NET o ASP.NET Core, los usuarios disponen de un entorno muy desarrollado para crear una amplia variedad de proyectos web. El marco incluye lenguajes de programación, editores de código e IDE, así como herramientas de desarrollo y un floreciente ecosistema de paquetes disponibles de forma gratuita. Hoy en día se utilizan métodos modernos como la programación reactiva, WebSockets y WebAssembly. Tradicionalmente, la mayor desventaja de utilizar ASP.NET era su estrecha relación con Microsoft y la consiguiente dependencia del proveedor. Con la continua apertura hacia el código abierto, han disminuido las objeciones en ese sentido.
¿Qué ventajas ofrece ASP.NET?
Los desarrolladores familiarizados con la programación en el ecosistema de Microsoft son los que más ventajas obtienen de trabajar con ASP.NET, ya que les permite recurrir fácilmente a los lenguajes, herramientas y flujos de trabajo que ya conocen. El framework .NET, altamente desarrollado, se utiliza como subestructura de ASP.NET, lo que significa que hay componentes adecuados para gran variedad de aplicaciones, una gran ventaja a la hora de desarrollar aplicaciones complejas de forma rápida y con resultados fiables.
El framework .NET tiene una estructura modular y emplea Common Language Runtime (CLR) como entorno de ejecución, lo que permite utilizar diferentes lenguajes de programación, siempre que cumplan con el estándar Common Language Infrastructure (CLI). Entre los lenguajes CLI desarrollados por Microsoft se incluyen, además de los clásicos C# y Visual Basic, orientados a objetos, el lenguaje funcional más nuevo F#. Los lenguajes CLI se pueden ejecutar como código del lado del cliente en el navegador a través de Blazor y WebAssembly.
Aunque, en un principio, ASP.NET se lanzó como software propietario gestionado por Microsoft, hoy es un proyecto de código abierto auspiciado por la .NET Foundation. En el transcurso de este proceso de apertura, se establecieron el administrador de paquetes NuGet y el repositorio público de paquetes correspondiente. De manera comparable a NPM o RubyGems, los desarrolladores de ASP.NET tienen a su disposición un ecosistema de paquetes de uso libre.
¿Qué inconvenientes tiene ASP.NET?
La mayor ventaja de ASP.NET, es decir, utilizar el ecosistema específico de Microsoft, es también el mayor inconveniente de esta tecnología, ya que, por lo general, el mundo del desarrollo web se basa en gran medida en plataformas, lenguajes y formatos gratuitos y abiertos. Asimismo, los desarrolladores que se introducen en el universo .NET por primera vez se encuentran con una abrumadora variedad de versiones y modelos de programación para elegir.
En el pasado, quien quería trabajar con el framework ASP.NET solo podía hacerlo en Windows. Desde hace años, Microsoft ha buscado abrirse de manera concertada hacia estándares ampliamente utilizados y de código abierto. Con la aparición de ASP.NET Core, el marco ahora es compatible con las tres principales familias de sistemas operativos: Windows, macOS y Linux. También es posible mantener el entorno de desarrollo en un contenedor Docker.
El ASP.NET clásico solo se podía alojar en Internet Information Server (IIS), la tecnología de servidor de Microsoft: una gran desventaja en comparación con otros frameworks de desarrollo web, los cuales también se ejecutan en Linux. El alojamiento ASP.NET tiene requisitos especiales y no está disponible para todos los proveedores. Cabe decir que era posible utilizar otros servidores web mediante Mono, que permite implementar .NET de forma gratuita. Sin embargo, el cambio real solo se produjo con la aparición de .NET Core y la Open Web Interface for .NET (OWIN). OWIN desacopla las aplicaciones ASP.NET del servidor web subyacente, eliminando uno de los mayores obstáculos del uso de este framework.
¿Cuáles son los requisitos para el entorno de hosting ASP.NET?
El framework ASP.NET es particular en términos de entorno de alojamiento. Otros frameworks de desarrollo web basados en los lenguajes PHP, Java, Python o JavaScript se ejecutan en servidores Linux. En cambio, para el hosting de aplicaciones ASP.NET, antes se necesitaba Windows como sistema operativo de servidor. También se utilizaba el servidor web Internet Information Services (IIS) de Microsoft. Para alojar una aplicación ASP.NET en los servidores de Windows, se tenía que utilizar Managed Windows Hosting. Con este modelo de alojamiento, los servidores son mantenidos constantemente por el proveedor, que proporciona actualizaciones del software.
El hosting de las aplicaciones ASP.NET Core es mucho más relajado. Además de en IIS, estas se pueden alojar en gran variedad de entornos de servidor. Para ello se utiliza el servidor web Kestrel integrado, que se ejecuta en Windows, Linux y macOS. Los servidores web más populares, como Nginx y Apache, pueden configurarse como proxy inverso y utilizarse junto con Kestrel. La alternativa HTTP.sys de Kestrel también está disponible en Windows.