close

ASP.NET

Saltar a navegación Saltar a búsqueda
ÁSPID. software de red
Logo
GéneroEntorno de desarrollo integrado
DesarrolladorCorporación Microsoft
Fecha de la primera versiónenero de 2003
Ultima versión4.7.1 (17 de octubre de 2017 )
Sistema operativoMicrosoft Windows
LicenciaLicencia Apache 2.0
( licencia gratuita )
Sitio webwww.asp.net/

ASP.NET es un proyecto de código abierto [1] [2] que incluye un conjunto de tecnologías de desarrollo de software para la web , comercializado por Microsoft . Usando estas tecnologías, los desarrolladores pueden crear aplicaciones web y servicios web ( servicios web ).

Fue lanzado por primera vez en enero de 2002 [3] con la versión 1.0 de .NET Framework y es el sucesor de la tecnología Active Server Pages (ASP) de Microsoft. ASP.NET se basa en Common Language Runtime (CLR), lo que permite a los programadores escribir código ASP.NET utilizando cualquier lenguaje .NET compatible. El marco de la extensión SOAP de ASP.NET permite que los componentes de ASP.NET procesen mensajes SOAP.

El sucesor de ASP.NET es ASP.NET Core. Es una reimplementación de ASP.NET como un marco de aplicación web modular , junto con otros marcos como Entity Framework . El nuevo marco utiliza el nuevo proyecto .NET Compiler Platform de código abierto (nombre en código "Roslyn") y es multiplataforma . ASP.NET MVC , ASP.NET Web API y ASP.NET Web Pages (una plataforma que usa solo páginas de Razor) se fusionaron en un MVC 6 unificado [4] .

Principios en los que se basa ASP.NET

Aunque el nombre ASP.NET deriva de ASP ( Active Server Pages ) ( la antigua tecnología de desarrollo web de Microsoft ), existen diferencias sustanciales entre los dos. De hecho, ASP.NET está basado, como todas las aplicaciones de la familia Microsoft .NET , en Common Language Runtime ( CLR ).

Los desarrolladores pueden escribir código usando cualquiera de los lenguajes de alto nivel soportados por .NET framework (biblioteca de clases) , como Visual Basic .Net (propiedad de Microsoft), C# (pronunciado C sharp , lenguaje sujeto a una especificación de estandarización ), J # ( J sharp , derivado de Java), pero también, muchos otros lenguajes de código abierto (y no), como Perl y Python , esto es posible ya que el CLR ha sido estandarizado en ECMA . Las aplicaciones ASP.NET son significativamente más rápidas y de mayor rendimiento que las creadas con otras tecnologías de secuencias de comandos , ya que todo el código del sitio web se compila previamente en unos pocos archivos dll (a menudo en un solo archivo) administrados por un servidor web .

ASP.NET tiene como objetivo simplificar la migración de los desarrolladores de las aplicaciones de Windows a las aplicaciones web al permitirles generar páginas compuestas por muchos controles de widgets , muy similares a los utilizados por la interfaz de usuario de Windows .

Un control web, como un botón o una etiqueta (label), funciona de manera muy similar a sus contrapartes de Windows: el código asociado a ellos puede asignarles ciertas propiedades y realizar acciones en respuesta a eventos asociados a ellos (por ejemplo, ejemplo ejemplo con solo presionar un botón). La diferencia es que, mientras que los controles de Windows se dibujan solos en la pantalla, los controles web producen bloques de código HTML que se insertan automáticamente en la página para enviarse al navegador del usuario final .

Paradigma de programación ASP.NET

ASP.NET está diseñado de tal manera que anima al desarrollador a utilizar sistemáticamente el paradigma de la interfaz gráfica de usuario ( GUI ) combinado con la llamada programación dirigida por eventos , es decir, el estilo de programación en el que los distintos bloques de código son ejecutado en respuesta a ciertos eventos o acciones en los controles gráficos del escritorio .

El estilo convencional de los lenguajes para el desarrollo de aplicaciones web se basaba en cambio en la técnica del scripting . Las clases de la biblioteca Framework. NET también proponen combinar e interactuar con tecnologías existentes, como JavaScript , para atribuir un carácter de persistencia a los objetos de software, incluso en el contexto de un entorno como la web, que es intrínsecamente sin estado ( stateless server ).

La biblioteca de clases de Framework. NET, implementa la estructura del CLR (Common Language Runtime), cuya base está formada por un compilador JIT ( justo a tiempo ). Esto significa que el código intermedio producido, llamado IL (Intermediate Language) e idéntico para todos los lenguajes de alto nivel utilizados, se compila en lenguaje máquina en el momento de la primera ejecución. Mediante el uso de diferentes compiladores justo a tiempo es posible reutilizar el mismo IL intermedio en diferentes procesadores . Esta técnica se llama Jitting . Este tipo de compilación es muy diferente de lenguajes como Java , en los que en cambio todo el código se ejecuta en una máquina virtual real , mientras que en .NET en el momento de la ejecución el programa está realmente en lenguaje de máquina como todos los demás lenguajes.

Al igual que todos los demás lenguajes de la suite .NET, ASP.NET también utiliza el mecanismo automático de desasignación de memoria llamado recolector de basura .

Fortalezas de ASP.NET sobre ASP

La amplia disponibilidad de controles, clases y herramientas de desarrollo permite reducir significativamente el tiempo de desarrollo de los módulos de software y permite al desarrollador reutilizar fácilmente el mismo código en diferentes aplicaciones. ASP.NET también ha simplificado significativamente las capacidades de acceso a datos sobre ASP. Por ejemplo, es mucho más fácil e inmediato generar una página que contenga una lista de datos tomados de una base de datos .

Otras ventajas son:

  • El código precompilado permite que las aplicaciones se ejecuten más rápido, con una mayor cantidad de errores de programación detectados y eliminados ya en desarrollo, así como también permite distribuir una aplicación web sin tener que adjuntar necesariamente la fuente.
  • Los controles definidos por el usuario le permiten implementar fácilmente controles muy comunes, como menús .
  • Los componentes COM y .NET adicionales no tienen que registrarse en el servidor operando desde la consola, pero la aplicación los inicializa en tiempo de ejecución . De esta manera, los clientes del proveedor de host no necesitan solicitar el registro de ninguna biblioteca del lado del servidor.
  • ASP.NET puede hacerse pasar por cualquier usuario del servidor de Windows donde se ejecuta, heredando todos los privilegios en el sistema de archivos .
  • La afinidad con los gráficos y el estilo de programación de las aplicaciones de Windows hace que cambiar entre ellas sea más intuitivo para los programadores.
  • La disponibilidad de un conjunto muy completo de controles y bibliotecas de clases permite un rápido desarrollo de aplicaciones.
  • La capacidad de almacenar en caché páginas completas, parte de las páginas o datos de la aplicación mejora enormemente el rendimiento general.
  • Si una aplicación ASP.NET no puede asignar la memoria que necesita ( pérdida de memoria ), el módulo de tiempo de ejecución descarga de la memoria todo el entorno aislado en el que se ejecuta la aplicación crítica y lo vuelve a cargar en otra área creada específicamente. Para realizar estas operaciones de carga/descarga (y otras relativas a la aplicación en su conjunto) el Framework. NET proporciona la clase AppDomain .
  • El estado de la sesión de ASP.NET se puede guardar en una base de datos del servidor SQL o en un proceso separado que resida en la misma máquina que el servidor web o en otra máquina. Los datos y las propiedades de la sesión no se pierden cuando se restablece Internet Information Services (IIS) o cuando se recicla el proceso ASP.NET activo.
  • Con Visual Studio .NET e IIS Server , puede realizar la depuración del lado del servidor, con las mismas herramientas paso a paso que se usan en la mayoría de los entornos de desarrollo de compilación.
  • La capacidad de la plataforma .NET CLR para soportar muchos lenguajes permite a los programadores escribir código para páginas web en VB.NET, C#, J#, etc.

Críticas a ASP.NET

ASP y ASP.NET pueden ejecutarse juntos en la misma aplicación web. Este enfoque permite a los desarrolladores migrar de un entorno a otro gradualmente en lugar de todos a la vez. Con IIS 6.0 y versiones anteriores, las páginas escritas con versiones anteriores del marco ASP no pueden compartir la misma sesión sin el uso de bibliotecas de terceros. Esta limitación no existe para las aplicaciones ASP.NET y ASP que se ejecutan juntas en IIS 7. En algunos casos, ASP.NET recicla el proceso activo durante el tiempo de ejecución, ocupando más del 60 % de la memoria disponible. Se puede configurar para que el reciclaje se realice solo después de un número determinado de solicitudes, después de un tiempo determinado, etc. Sin embargo, al hacerlo, el usuario puede perder el estado de la sesión actual. Si la aplicación usa el estado de la sesión para cargar la información de autenticación (mala práctica, ya que la autenticación y la membresía basadas en cookies son una opción disponible que ya está integrada en el marco) y si la aplicación está configurada para usar sesiones en proceso, el usuario puede cerrar la sesión si el proceso es reciclado.

Ejemplo de código

A continuación se muestra el código fuente que genera el mensaje mínimo clásico:

<% @  Idioma de página  = "C #" %> 
<HTML>
<JEFE>
    <TITLE> Ejemplo de una página ASPX </TITLE>
</HEAD>
<CUERPO>
     < ESTILO DIV = "ALINEAR TEXTO: CENTRO" >
        <% 
             ciclo int ;
            Cadena  mstringa  =  "" ;
            for  ( m ciclo  =  1 ;  m ciclo  <=  10 ;  m ciclo ++ )  {
                mcadena  =  mcadena  +  Cadena . Formato ( "<SPAN STYLE = 'FONT-SIZE: {0} PX'> Hola mundo en ASP.NET </SPAN> <br />" ,  mcycle ) ; 
            } 
            mensaje _ HTML interno = mstring  ;  
        %> 
        <SPAN  id =  "Mensaje"  runat = "servidor" /> 
    </DIV> 
</BODY>
</HTML>

Los nombres de archivo ASP.NET tienen una extensión .aspx . La directiva de página le permite especificar el idioma utilizado (en el ejemplo C #) y muchos otros atributos que le permiten describir las propiedades y la apariencia de la página. Cada página aspx puede contener solo una directiva de página . Tenga en cuenta que las líneas de código de muestra que siguen a la directiva Page son código HTML sin formato.

Se declaran 2 variables: el ciclo completo y la cadena llamada mstring , y se define un bucle for para mostrar el mensaje con caracteres de tamaño creciente de 1 a 10. La variable mstring almacena el código HTML que se mostrará. Al final del ciclo se establece la propiedad InnerHtml del objeto Message .

La etiqueta <SPAN>tiene el atributo runatque indica que el elemento debe ejecutarse del lado del servidor , como suele ser el caso en las aplicaciones desarrolladas en ASP.NET.

Herramientas de desarrollo

Hay muchos software disponibles para desarrollar aplicaciones ASP.NET, los principales y más populares son:

ASP.NET 3.5

ASP.NET 3.0 nunca existió. Microsoft usó el nombre ".NET Framework 3.0" para implementar un conjunto de nuevas tecnologías: WPF ( Windows Presentation Foundation ), WCF ( Windows Communication Foundation ) y WF ( Windows Workflow Foundation ). Sin embargo, .NET Framework 3.0 no incluye una nueva versión de CLR o ASP.NET. En comparación con la versión 2.0, la versión 3.5 de ASP.NET puede considerarse una evolución gradual; en concreto, las novedades se concentran en tres áreas: LINQ , AJAX y Silverlight .

Seguridad

Un sitio web ASP.NET puede estar sujeto a ataques de piratas informáticos [5] :

  • Configuración incorrecta de las opciones de seguridad
  • Falsificación de solicitud entre sitios (CSRF): permite que un atacante obligue a un usuario validado y registrado a realizar acciones sin su consentimiento
  • Secuencias de comandos entre sitios (XSS)
  • Carga de archivos maliciosos: los atacantes pueden cambiar las extensiones de los archivos (por ejemplo, de ".exe" a ".jpeg") y el script malicioso se puede cargar como un archivo de imagen.
  • Divulgación de la versión: un atacante puede utilizar la información de la versión. Cada vez que un navegador envía una solicitud HTTP al servidor, en respuesta obtenemos un encabezado de respuesta que contiene toda la información sobre el servidor.
  • Inyección SQL : permite a los atacantes suplantar la identidad , modificar datos existentes, causar problemas de repudio, como cancelar transacciones o cambiar estados financieros, obtener todos los datos en el sistema, eliminar o hacer que los datos sean inaccesibles y crear o comprometer a los usuarios del servidor de la base de datos.
  • Exposición a datos sensibles: contraseñas, números PAN, información de tarjetas de crédito, etc.
  • Autenticación rota y gestión de sesiones. Si la autenticación y la gestión de sesiones no se implementan correctamente en una aplicación web, la dejará vulnerable a los ataques. Los atacantes pueden robar datos debido a:
  1. Conexiones no seguras (que no usan SSL )
  2. Credenciales de inicio de sesión predecibles
  3. No almacene las credenciales de forma cifrada
  4. Cierre de sesión de aplicación incorrecto
  • Redirecciones y reenvíos no validados. Si no validamos los redireccionamientos de páginas web, aumenta el riesgo de un ataque. Este ataque se utiliza principalmente para phishing de la credencial del usuario o para instalar malware malicioso.

Plantillas de Programación

ASP.NET admite una serie de modelos de programación para crear aplicaciones web [6] :

  • Formulario web ASP.NET: un marco para crear páginas modulares a partir de componentes, con eventos de interfaz de usuario procesados ​​en el lado del servidor.
  • ASP.NET MVC: cree páginas web utilizando el modelo de diseño de modelo - vista - controlador.
  • Páginas web ASP.NET: sintaxis ligera para agregar código dinámico y acceder a datos directamente dentro del marcado HTML [7] .
  • ASP.NET Web API: marco para crear Web API en .NET Framework [8] .
  • ASP.NET Webhook: implementa el modelo de webhook para suscribirse y publicar eventos a través de HTTP.
  • SignalR: un marco de comunicación en tiempo real para la comunicación bidireccional entre el cliente y el servidor.

Otras extensiones de ASP.NET incluyen:

  • ASP.NET Handler: componentes que implementan la interfaz System.Web.IHttpHandler. A diferencia de las páginas ASP.NET, no tienen archivos de marcado HTML, eventos y otro soporte. Todo lo que tienen es un archivo de código (escrito en cualquier lenguaje compatible con .NET) que escribe algunos datos en la respuesta HTTP del servidor. Los controladores HTTP son similares a las extensiones ISAPI.
  • ASP.NET AJAX: una extensión con componentes del lado del cliente y del lado del servidor para escribir páginas ASP.NET que incorporan la funcionalidad Ajax.
  • ASP.NET Dynamic Data: una extensión de andamiaje para crear aplicaciones web basadas en datos.

Canalización integrada de IIS

En IIS 6.0 y versiones anteriores, las páginas escritas con diferentes versiones del marco ASP no pueden compartir el estado de la sesión sin usar bibliotecas de terceros. Esto no se aplica a las aplicaciones ASP.NET y ASP que se ejecutan en paralelo en IIS 7. Con IIS 7.0, los módulos se pueden ejecutar en una canalización integrada que permite que los módulos escritos en cualquier idioma se ejecuten para cualquier solicitud [9] .

Versiones

Fecha Versión
30 de noviembre de 2015 4.6.1
30 de abril de 2018 4.7.2
24 de abril de 2003 1.1
21 de noviembre de 2006 3.0
20 julio 2015 4.6
19 de noviembre de 2007 3.5
18 de noviembre de 2015 5 RC1
18 de abril de 2019 4.8
17 de octubre de 2017 4.7.1
17 de octubre de 2013 4.5.1
16 de enero de 2002 1.0
15 de agosto de 2012 4.5
12 de abril de 2010 4.0
11 de abril de 2017 4.7
11 de agosto de 2008 3.5 Paquete de servicio 1
7 de noviembre de 2005 2.0
5 de mayo de 2014 4.5.2
2 de agosto de 2016 4.6.2

Comparación con PHP

PHP es un competidor directo de ASP.NET. La elección de los dos idiomas tiene pros y contras según tus necesidades [10] [11] [12] :

PRO VERSUS
PHP ASP.NET PHP ASP.NET
Es de código abierto, por lo que es gratuito y un gran número de personas lo mejoran constantemente en lugar de una sola empresa. Admite todos los lenguajes de programación y funciona bien con aplicaciones o C# No es adecuado para crear aplicaciones de escritorio. Menos fácil de aprender y entender que PHP
Hay más grupos de apoyo en línea para ayudar a acelerar el proceso de aprendizaje que ASP.NET Notifique a los desarrolladores si han cometido errores en la codificación antes de compilar El manejo de errores de PHP se considera deficiente en comparación con ASP.NET, por lo que puede llevar más tiempo descubrir un problema Comunidad de apoyo más pequeña
Más fácil de aprender y comprender que ASP.NET Viene con muchas herramientas y características para ayudar a los programadores. Permite la personalización que provoca errores y una codificación deficiente en comparación con ASP.NET Solo funciona en un servidor de Microsoft.
También funciona en servidores Linux . Creación de aplicaciones de escritorio. Al ser Open Source, el código está al alcance de todos y por tanto más expuesto a ataques Más caro debido a la licencia de Microsoft

Notas

  1. ^ ( EN ) .NET es código abierto en GitHub | .NET , en Microsoft . Consultado el 4 de mayo de 2022 .
  2. ^ ¿Qué es ASP.NET? , en IONOS Digitalguide . Consultado el 4 de mayo de 2022 .
  3. ^ ¿Qué es ASP.NET ? | El marco web de código abierto , en umbraco.com . Consultado el 4 de mayo de 2022 .
  4. ^ Wadepickett , documentación de ASP.NET , en docs.microsoft.com . Consultado el 4 de mayo de 2022 .
  5. ^ 9 formas en que los piratas informáticos aprovechan ASP.NET y cómo evitarlas , en Business 2 Community . Consultado el 28 de enero de 2021 .
  6. ^ Elija entre ASP.NET y ASP.NET Core , en docs.microsoft.com .
  7. ^ Preguntas frecuentes sobre páginas web ASP.NET ( Razor) , en docs.microsoft.com .
  8. ^ Comience con ASP.NET Web API 2 (C # ) , en docs.microsoft.com .
  9. ^ Cómo aprovechar la canalización integrada de IIS 7.0 , en iis.net .
  10. ^ PHP vs ASP.NET: principales diferencias para la comprensión de los principiantes , en Appinventiv , 28 de septiembre de 2018. Consultado el 30 de enero de 2021 .
  11. ^ Varun Bhagat, ASP.Net vs PHP: ¿Cuál es mejor? , en PixelCrayons , 8 de octubre de 2019. Consultado el 30 de enero de 2021 .
  12. ^ Kiranbeladiya , .NET Framework Vs .NET Core: una comparación rápida completa , en TheOneTechnologies , 24 de septiembre de 2021. Consultado el 24 de junio de 2022 .

Artículos relacionados

Enlaces externos