Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Clase ServicePoint

 

Publicado: octubre de 2016

Proporciona administración de conexiones para las conexiones HTTP.

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

System.Object
  System.Net.ServicePoint

public class ServicePoint

NombreDescripción
System_CAPS_pubpropertyAddress

Obtiene el identificador uniforme de recursos (URI) del servidor al que se conecta este objeto ServicePoint.

System_CAPS_pubpropertyBindIPEndPointDelegate

Especifica el delegado que asocia un objeto IPEndPoint local a un objeto ServicePoint.

System_CAPS_pubpropertyCertificate

Obtiene el certificado recibido para este objeto ServicePoint.

System_CAPS_pubpropertyClientCertificate

Obtiene el último certificado de cliente enviado al servidor.

System_CAPS_pubpropertyConnectionLeaseTimeout

Obtiene o establece el número de milisegundos transcurridos los cuales una conexión ServicePoint activa se cierra.

System_CAPS_pubpropertyConnectionLimit

Obtiene o establece el número máximo de conexiones permitidas en este objeto ServicePoint.

System_CAPS_pubpropertyConnectionName

Obtiene el nombre de la conexión.

System_CAPS_pubpropertyCurrentConnections

Obtiene el número de conexiones abiertas asociadas a este objeto ServicePoint.

System_CAPS_pubpropertyExpect100Continue

Obtiene o establece un valor Boolean que determina si se usa el comportamiento 100-Continue.

System_CAPS_pubpropertyIdleSince

Obtiene la fecha y la hora en que el objeto ServicePoint se conectó al host por última vez.

System_CAPS_pubpropertyMaxIdleTime

Obtiene o establece la cantidad de tiempo que una conexión asociada al objeto ServicePoint puede permanecer inactiva antes de cerrarse.

System_CAPS_pubpropertyProtocolVersion

Obtiene la versión del protocolo HTTP que usa el objeto ServicePoint.

System_CAPS_pubpropertyReceiveBufferSize

Obtiene o establece el tamaño del búfer de recepción para el socket utilizado por ServicePoint.

System_CAPS_pubpropertySupportsPipelining

Indica si el objeto ServicePoint admite conexiones canalizadas.

System_CAPS_pubpropertyUseNagleAlgorithm

Obtiene o establece un valor Boolean que determina si se utiliza el algoritmo de Nagle en las conexiones administradas por este objeto ServicePoint.

NombreDescripción
System_CAPS_pubmethodCloseConnectionGroup(String)

Quita el grupo de conexiones especificado de este objeto ServicePoint.

System_CAPS_pubmethodEquals(Object)

Determina si el objeto especificado es igual al objeto actual.(Heredado de Object).

System_CAPS_protmethodFinalize()

Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por el recolector de basura. (Heredado de Object).

System_CAPS_pubmethodGetHashCode()

Sirve como la función hash predeterminada.(Heredado de Object).

System_CAPS_pubmethodGetType()

Obtiene el Type de la instancia actual.(Heredado de Object).

System_CAPS_protmethodMemberwiseClone()

Crea una copia superficial del Object actual.(Heredado de Object).

System_CAPS_pubmethodSetTcpKeepAlive(Boolean, Int32, Int32)

Habilita o deshabilita la opción keep-alive en una conexión TCP.

System_CAPS_pubmethodToString()

Devuelve una cadena que representa al objeto actual. (Heredado de Object).

La ServicePoint clase controla las conexiones a un recurso de Internet basándose en la información del host pasada del identificador de recursos uniforme (URI) en el recurso. La conexión inicial con el recurso determina la información que el ServicePoint mantiene el objeto, que, a continuación, se comparte en todas las solicitudes subsiguientes a ese recurso.

ServicePoint objetos administrados por el ServicePointManager de clase y se crean, si es necesario, por el ServicePointManager.FindServicePoint (método). ServicePoint objetos nunca se crean directamente, pero son siempre creados y administrados por el ServicePointManager clase. El número máximo de ServicePoint objetos que se pueden crear se establece mediante el ServicePointManager.MaxServicePoints propiedad.

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

Cuando el ConnectionLeaseTimeout propiedad se establece en un valor distinto de-1 y después del tiempo especificado ha transcurrido, activa una ServicePoint conexión se cierra después de que atiende la solicitud siguiente. Esto es útil para las aplicaciones que no requieren conexiones activas que se abren de forma indefinida, ya que son de forma predeterminada.

System_CAPS_noteNota

En condiciones de carga alta, algunas aplicaciones pueden quedarse sin subprocesos libres en ThreadPool, lo que puede dar lugar a rendimiento deficiente del sistema (como tiempos de transacción alto y variable). Consulte http://msdn.microsoft.com/library/default.asp?url=/library/dnpag/html/scalenetchapt17.asp para un número de cambios de configuración que puede realizar para corregir este problema.

En el ejemplo de código siguiente se crea un ServicePoint objeto que se conecta al identificador 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
Disponible desde 1.1

Cualquier miembro ( Compartido en Visual Basic) estático público de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Volver al principio
Mostrar: