Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

ServicePoint (Clase)

Proporciona administración de conexiones para las conexiones HTTP.

System.Object
  System.Net.ServicePoint

Espacio de nombres:  System.Net
Ensamblado:  System (en System.dll)

public class ServicePoint

El tipo ServicePoint expone los siguientes miembros.

  NombreDescripción
Propiedad públicaAddressObtiene el identificador URI del servidor al que se conecta este objeto ServicePoint.
Propiedad públicaBindIPEndPointDelegateEspecifica el delegado que asocia un objeto IPEndPoint local a un objeto ServicePoint.
Propiedad públicaCertificateObtiene el certificado recibido para este objeto ServicePoint.
Propiedad públicaClientCertificateObtiene el último certificado del cliente enviado al servidor.
Propiedad públicaConnectionLeaseTimeoutObtiene o establece el número de milisegundos transcurridos los cuales una conexión ServicePoint activa se cierra.
Propiedad públicaConnectionLimitObtiene o establece el número máximo de conexiones permitidas en este objeto ServicePoint.
Propiedad públicaConnectionNameObtiene el nombre de la conexión.
Propiedad públicaCurrentConnectionsObtiene el número de conexiones abiertas asociadas a este objeto ServicePoint.
Propiedad públicaExpect100ContinueObtiene o establece un valor Boolean que determina si se utiliza el comportamiento 100-Continue.
Propiedad públicaIdleSinceObtiene la fecha y la hora en que el objeto ServicePoint se conectó al host por última vez.
Propiedad públicaMaxIdleTimeObtiene o establece la cantidad de tiempo que una conexión asociada al objeto ServicePoint puede permanecer inactiva antes de cerrarse.
Propiedad públicaProtocolVersionObtiene la versión del protocolo HTTP que usa el objeto ServicePoint.
Propiedad públicaReceiveBufferSizeObtiene o establece el tamaño del búfer de recepción para el socket utilizado por ServicePoint.
Propiedad públicaSupportsPipeliningIndica si el objeto ServicePoint admite conexiones canalizadas.
Propiedad públicaUseNagleAlgorithmObtiene o establece un valor Boolean que determina si se utiliza el algoritmo de Nagle en las conexiones administradas por este objeto ServicePoint.
Arriba

  NombreDescripción
Método públicoCloseConnectionGroupQuita el grupo de conexiones especificado de este objeto ServicePoint.
Método públicoEquals(Object)Determina si el objeto especificado es igual al objeto actual. (Se hereda de Object).
Método protegidoFinalize Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por la recolección de elementos no utilizados. (Se hereda de Object).
Método públicoGetHashCode Sirve como una función hash para un tipo en particular. (Se hereda de Object).
Método públicoGetType Obtiene el Type de la instancia actual. (Se hereda de Object).
Método protegidoMemberwiseClone Crea una copia superficial del Object actual. (Se hereda de Object).
Método públicoSetTcpKeepAliveHabilita o deshabilita la opción keep-alive en una conexión TCP.
Método públicoToString Retorna una cadena que representa al objeto actual. (Se hereda de Object).
Arriba

La clase ServicePoint controla las conexiones con un recurso de Internet basándose en la información del host pasada en el identificador URI del recurso. La conexión inicial con el recurso determina la información que mantiene el objeto ServicePoint, y que compartirán todas las solicitudes que se realicen con posterioridad en ese recurso.

Los objetos ServicePoint son administrados por la clase ServicePointManager y se crean, si es necesario, por el método ServicePointManager.FindServicePoint. Los objetos ServicePoint no se crean nunca directamente sino que siempre los crea y administra la clase ServicePointManager. El número máximo de objetos ServicePoint que se pueden crear se establece mediante la propiedad ServicePointManager.MaxServicePoints.

Cada objeto ServicePoint mantiene su conexión con un recurso de Internet hasta que ha estado inactivo durante más tiempo del especificado en la propiedad MaxIdleTime. Cuando ServicePoint supera el valor MaxIdleTime, se puede reciclar para otra conexión. El valor predeterminado de MaxIdleTime se establece mediante la propiedad ServicePointManager.MaxServicePointIdleTime.

Cuando la propiedad ConnectionLeaseTimeout se establece en un valor distinto de -1, y cuando transcurre el tiempo especificado, una conexión ServicePoint activa se cierra después de atender la solicitud siguiente. Esto es útil para aquellas aplicaciones que no requieren que las conexiones activas estén abiertas indefinidamente, como ocurre de manera predeterminada.

NotaNota

En casos de una carga elevada, ciertas aplicaciones podrían quedarse sin subprocesos libres en ThreadPool, lo que podría empeorar el rendimiento del sistema (por ejemplo, duración prolongada y variable de las transacciones). Vea http://msdn.microsoft.com/es-es/library/default.aspx para obtener información sobre los cambios de configuración que puede llevar a cabo para resolver este problema.

En el ejemplo de código siguiente se crea un objeto ServicePoint que se conecta al identificador uniforme de recursos (URI) www.contoso.com.


// This example shows how to use the ServicePoint and ServicePointManager classes.
// The ServicePointManager class uses the ServicePoint class to manage connections
// to a remote host. The networking classes reuse service points for all 
// requests to a given URI. In fact, the same ServicePoint object 
// is used to issue requests to Internet resources identified by the same
// scheme identifier (for example,  HTTP) and host fragment (for example,  www.contoso.com).  
// This should improve your application performance. 
// Reusing service points in this way can help improve application performance.
using System;
using System.Net;
using System.Threading;
using System.Text.RegularExpressions;

namespace Mssc.Services.ConnectionManagement
{
    class TestServicePoint
    {
        private static void ShowProperties (ServicePoint sp)
        {
            Console.WriteLine ("Done calling FindServicePoint()...");

            // Display the ServicePoint Internet resource address.
            Console.WriteLine ("Address = {0} ", sp.Address.ToString ());

            // Display the date and time that the ServicePoint was last 
            // connected to a host.
            Console.WriteLine ("IdleSince = " + sp.IdleSince.ToString ());

            // Display the maximum length of time that the ServicePoint instance  
            // is allowed to maintain an idle connection to an Internet  
            // resource before it is recycled for use in another connection.
            Console.WriteLine ("MaxIdleTime = " + sp.MaxIdleTime);

            Console.WriteLine ("ConnectionName = " + sp.ConnectionName);

            // Display the maximum number of connections allowed on this 
            // ServicePoint instance.
            Console.WriteLine ("ConnectionLimit = " + sp.ConnectionLimit);

            // Display the number of connections associated with this 
            // ServicePoint instance.
            Console.WriteLine ("CurrentConnections = " + sp.CurrentConnections);

            if (sp.Certificate == null)
                Console.WriteLine ("Certificate = (null)");
            else
                Console.WriteLine ("Certificate = " + sp.Certificate.ToString ());

            if (sp.ClientCertificate == null)
                Console.WriteLine ("ClientCertificate = (null)");
            else
                Console. WriteLine ("ClientCertificate = " + sp.ClientCertificate.ToString ());

            Console.WriteLine ("ProtocolVersion = " + sp.ProtocolVersion.ToString ());
            Console.WriteLine ("SupportsPipelining = " + sp.SupportsPipelining);

            Console.WriteLine ("UseNagleAlgorithm = " + sp.UseNagleAlgorithm.ToString ());
            Console.WriteLine ("Expect 100-continue = " + sp.Expect100Continue.ToString ());
        }

        private static void makeWebRequest (int hashCode, string Uri)
        {
            HttpWebResponse res = null;

            // Make sure that the idle time has elapsed, so that a new 
            // ServicePoint instance is created.
            Console.WriteLine ("Sleeping for 2 sec.");
            Thread.Sleep (2000);
            try
            {
                // Create a request to the passed URI.
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create (Uri);

                Console.WriteLine ("\nConnecting to " + Uri + " ............");

                // Get the response object.
                res = (HttpWebResponse)req.GetResponse ();
                Console.WriteLine ("Connected.\n");

                ServicePoint currentServicePoint = req.ServicePoint;

                // Display new service point properties.
                int currentHashCode = currentServicePoint.GetHashCode ();

                Console.WriteLine ("New service point hashcode: " + currentHashCode);
                Console.WriteLine ("New service point max idle time: " + currentServicePoint.MaxIdleTime);
                Console.WriteLine ("New service point is idle since " + currentServicePoint.IdleSince );

                // Check that a new ServicePoint instance has been created.
                if (hashCode == currentHashCode)
                    Console.WriteLine ("Service point reused.");
                else
                    Console.WriteLine ("A new service point created.") ;
            }
            catch (Exception e)
            {
                Console.WriteLine ("Source : " + e.Source);
                Console.WriteLine ("Message : " + e.Message);
            }
            finally
            {
                if (res != null)
                    res.Close ();
            }
        }

        // Show the user how to use this program when wrong inputs are entered.
        private static void showUsage ()
        {
            Console.WriteLine ("Enter the proxy name as follows:");
            Console.WriteLine ("\tcs_servicepoint proxyName");
        }

        public static void Main (string[] args)
        {
            int port = 80;

            // Define a regular expression to parse the user's input.
            // This is a security check. It allows only
            // alphanumeric input strings between 2 to 40 characters long.
            Regex rex = new Regex (@"^[a-zA-Z]\w{1,39}$");

            if (args.Length < 1)
            {
                showUsage ();
                return;
            }
            string proxy = args[0];

            if ((rex.Match (proxy)).Success != true)
            {
                Console.WriteLine ("Input string format not allowed.");
                return;
            }
            string proxyAdd = "http://" + proxy + ":" + port;

            // Create a proxy object.  
            WebProxy DefaultProxy = new WebProxy (proxyAdd, true);

            // Set the proxy that all HttpWebRequest instances use.
            WebRequest.DefaultWebProxy = DefaultProxy;

            // Get the base interface for proxy access for the 
            // WebRequest-based classes.
            IWebProxy Iproxy = WebRequest.DefaultWebProxy;

            // Set the maximum number of ServicePoint instances to 
            // maintain. If a ServicePoint instance for that host already 
            // exists when your application requests a connection to
            // an Internet resource, the ServicePointManager object
            // returns this existing ServicePoint instance. If none exists 
            // for that host, it creates a new ServicePoint instance.
            ServicePointManager.MaxServicePoints = 4;

            // Set the maximum idle time of a ServicePoint instance to 10 seconds.
            // After the idle time expires, the ServicePoint object is eligible for
            // garbage collection and cannot be used by the ServicePointManager object.
            ServicePointManager.MaxServicePointIdleTime = 10000;



            ServicePointManager.UseNagleAlgorithm = true;
            ServicePointManager.Expect100Continue = true;
            ServicePointManager.CheckCertificateRevocationList = true;
            ServicePointManager.DefaultConnectionLimit = ServicePointManager.DefaultPersistentConnectionLimit;
            // Create the Uri object for the resource you want to access.
            Uri MS = new Uri ("http://msdn.microsoft.com/");

            // Use the FindServicePoint method to find an existing 
            // ServicePoint object or to create a new one.  
            ServicePoint servicePoint = ServicePointManager.FindServicePoint (MS, Iproxy);

            ShowProperties (servicePoint);

            int hashCode = servicePoint.GetHashCode ();

            Console.WriteLine ("Service point hashcode: " + hashCode);

            // Make a request with the same scheme identifier and host fragment
            // used to create the previous ServicePoint object.
            makeWebRequest (hashCode, "http://msdn.microsoft.com/library/");



        }

    }
}


.NET Framework

Compatible con: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Todos los miembros públicos static (Shared en Visual Basic) de este tipo son seguros para subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft