Compartir a través de


Presentación de protocolos conectables

Microsoft .NET Framework realiza una implementación por capas, extensible y administrada de servicios de Internet que se pueden integrar rápida y fácilmente en sus aplicaciones. Las clases de acceso a Internet de los espacios de nombres System.Net y System.Net.Sockets se pueden utilizar para implementar aplicaciones Web y aplicaciones de Internet.

Aplicaciones de Internet

Las aplicaciones de Internet se pueden clasificar en dos: aplicaciones cliente que solicitan información y aplicaciones de servidor que responden a las solicitudes de información de los clientes. La aplicación cliente-servidor clásica de Internet es World Wide Web, donde las personas utilizan exploradores para tener acceso a documentos y a otros datos almacenados en servidores Web en todo el mundo.

Las aplicaciones no se limitan a una de estas funciones; por ejemplo, el servidor de aplicaciones de nivel medio responde a solicitudes de clientes solicitando a su vez los datos a otro servidor y, por lo tanto, está actuando como servidor y como cliente.

La aplicación cliente realiza una solicitud identificando el recurso de Internet solicitado y el protocolo de comunicaciones que se va a utilizar para la solicitud y la respuesta. Si fuera necesario, el cliente también proporciona los datos adicionales necesarios para completar la solicitud, como la ubicación del proxy o información de autenticación (nombre de usuario, contraseña, etc.). Una vez formada la solicitud, se puede enviar al servidor.

Identificar recursos

.NET Framework utiliza un identificador de recursos uniforme (URI) para identificar el recurso de Internet solicitado y el protocolo de comunicación. El URI consta de al menos tres, y probablemente cuatro, fragmentos: el identificador de servicio, que identifica el protocolo de comunicación de la solicitud y la respuesta, el identificador de servidor, que consta de un nombre de host DSN (Sistema de nombres de dominio) o una dirección TCP que identifica de forma exclusiva el servidor en Internet, el identificador de ruta, que ubica la información solicitada en el servidor, y una cadena de consulta opcional, que pasa información del cliente del servidor. Por ejemplo, el URI "https://www.contoso.com/whatsnew.aspx?date=today" está formado por el identificador de servicio "http", el identificador de servidor "www.contoso.com", la ruta "/whatsnew.aspx" y la cadena de consulta "?date=today".

Una vez que el servidor recibe la solicitud y procesa la respuesta, devuelve la respuesta a la aplicación cliente. La respuesta incluye información adicional, como el tipo de contenido (texto sin formato o datos XML, por ejemplo).

Solicitudes y respuestas en .NET Framework

.NET Framework utiliza clases específicas para proporcionar los tres datos necesarios para tener acceso a los recursos de Internet mediante un modelo de solicitud-respuesta: la clase Uri, que contiene el URI del recurso de Internet que está buscando, la clase WebRequest, que contiene una solicitud para el recurso, y la clase WebResponse, que proporciona un contenedor para la respuesta entrante.

Las aplicaciones cliente crean instancias de WebRequest pasando el URI del recurso de red al método WebRequest.Create. Este método estático crea una instancia de WebRequest para un protocolo específico, como HTTP. La instancia de WebRequest que se devuelve proporciona acceso a las propiedades que controlan la solicitud al servidor y el acceso a la secuencia de datos que se envía cuando se realiza la solicitud. El método GetResponse de la instancia de WebRequest envía la solicitud desde la aplicación cliente al servidor identificado en el URI. Cuando la respuesta pueda sufrir demoras, la solicitud se puede realizar de forma asíncrona utilizando el método BeginGetResponse de la instancia de WebRequest, y la respuesta se puede devolver más adelante utilizando el método EndGetResponse.

Los métodos GetResponse y EndGetResponse devuelven una instancia de WebResponse que proporciona acceso a los datos devueltos por el servidor. Debido a que estos datos se envían a la aplicación solicitante como una secuencia mediante el método GetResponseStream, se pueden utilizar en cualquier aplicación que utilice secuencias de datos.

Las clases WebRequest y WebResponse son la base de los protocolos conectables, que son una implementación de los servicios de red que permiten desarrollar aplicaciones que utilizan recursos de Internet sin preocuparse por el protocolo que utiliza cada recurso. Las clases descendientes de WebRequest se registran en la clase WebRequest para administrar los detalles del establecimiento de conexiones a los recursos de Internet.

Como ejemplo, la clase HttpWebRequest administra los detalles de la conexión a un recurso de Internet mediante HTTP. De forma predeterminada, cuando el método WebRequest.Create encuentra un URI que comienza por "http:" o "https:" (los identificadores de protocolo de HTTP y HTTP seguro), la instancia de WebRequest que se devuelve se puede utilizar tal cual, o su tipo se puede convertir en HttpWebRequest para tener acceso a las propiedades específicas del protocolo. En la mayoría de los casos, la instancia de WebRequest proporciona toda la información necesaria para realizar una solicitud.

En una clase WebRequest se puede utilizar cualquier protocolo que se pueda representar como una transacción solicitud-respuesta. Las clases específicas de protocolos se pueden derivar de WebRequest y WebResponse y, después, registrarlas con el método estático WebRequest.RegisterPrefix para que la aplicación pueda utilizarlas.

Cuando las solicitudes de Internet necesitan autorización del cliente, la propiedad Credentials de WebRequest suministra las credenciales necesarias. Estas credenciales pueden ser un par sencillo de nombre y contraseña para autenticación HTTP básica e implícita, o un conjunto de nombre, contraseña y dominio para autenticación NTLM o Kerberos. En una instancia de NetworkCredentials se puede almacenar un conjunto de credenciales y en una instancia de CredentialCache se pueden almacenar varios conjuntos al mismo tiempo. CredentialCache utiliza el URI de la solicitud y el esquema de autenticación que admite el servidor para determinar qué credenciales debe enviar al servidor.

Solicitudes sencillas con WebClient

Para aplicaciones que necesitan realizar solicitudes sencillas de recursos de Internet, la clase WebClient proporciona métodos habituales para cargar y descargar datos de un servidor de Internet. WebClient se basa en la clase WebRequest para proporcionar acceso a los recursos de Internet; por lo tanto, la clase WebClient puede utilizar cualquier protocolo conectable registrado.

Para aplicaciones que no utilicen el modelo de solicitud-respuesta, o para aplicaciones que necesiten atender la red así como enviar solicitudes, el espacio de nombres System.Net.Sockets proporciona las clases TCPClient, TCPListener y UDPClient. Estas clases controlan los detalles del establecimiento de las conexiones mediante diferentes protocolos de transporte, y exponen la conexión de red a la aplicación como una secuencia.

Los programadores que estén familiarizados con la interfaz de Windows Sockets o aquellos que necesiten el control que proporciona la programación en el nivel de socket, encontrarán que las clases de System.Net.Sockets se ajustan a sus necesidades. Las clases de System.Net.Sockets son una transición entre el código administrado y el código nativo de las clases de System.Net. En la mayoría de los casos, las clases System.Net.Sockets calculan las referencias de sus datos en sus análogos de 32 bits de Windows, y realizan todas las comprobaciones de seguridad necesarias.

Vea también

Programar protocolos conectables | Acceso a Internet