Cómo realizar salida caché con servicios Web en Visual C# .NET

Seleccione idioma Seleccione idioma
Id. de artículo: 318299 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

Nota Se hace referencia a los espacios de nombres biblioteca de clases de .NET Framework siguientes en este artículo:
  • System.Web.Services
  • System.Text
En este artículo paso a paso describe cómo crear un servicio Web ASP.NET que utiliza el almacenamiento en caché de resultados de ejemplo. Almacenamiento en caché de resultados almacena el resultado de respuesta de salida de un servicio Web basándose en el atributo de duración que se especifica para un WebMethod correspondiente.

Nota En ASP.NET 2.0, el método HTTP de la página de prueba ha cambiado de GET a POST. Sin embargo, POST no se almacenan en normalmente caché. Si cambia la página de prueba de una aplicación de servicio Web ASP.NET 2.0 para utilizar GET, almacenamiento en caché funciona correctamente. Además, HTTP indica que un agente de usuario (el explorador o aplicación de llamada) debe ser puedo ignorar el almacenamiento en caché del servidor estableciendo el encabezado Cache-control para "no-cache". Por lo tanto, las aplicaciones ASP.NET omiten resultados en caché cuando encontró un encabezado "no-cache".

Requisitos

En la lista siguiente se describe el hardware, el software, la infraestructura de red y los Service Packs recomendados que necesitará:
  • Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, Microsoft Windows 2000 Advanced Server o Microsoft Windows XP
  • Microsoft .NET framework
  • Servicios de Microsoft Internet Information Server (IIS)

Crear una aplicación de servicio Web de ASP.NET nuevo

Cree una nueva aplicación de servicio Web ASP.NET denominada WSCacheSample:
  1. Inicie Visual Studio NET..
  2. En el menú archivo , seleccione nuevo y, a continuación, haga clic en proyecto para iniciar al Asistente para proyecto nuevo.
  3. En tipos de proyecto , seleccione C# . Bajo plantillas , seleccione Servicio Web ASP.NET .
  4. En el cuadro ubicación , reemplace "WebService #" en la ruta URL con el nombre del proyecto, WSCacheSample . Si utiliza el servidor local, dejar el nombre del servidor como http://localhost, por lo que el cuadro ubicación similar a ésta:
    http://localhost/WSCacheSample

Crear el servicio Web de ejemplo

  1. En el Explorador de soluciones, haga clic con el botón secundario del mouse en el nodo del proyecto, elija Agregar y, a continuación, haga clic en Agregar servicio Web .
  2. Para el nombre, escriba CacheDemo.asmx y a continuación, haga clic en Abrir . Abre el servicio Web en la vista Diseño.
  3. Haga clic con el botón secundario en el servicio Web y, a continuación, haga clic en Ver código .
  4. Agregue el código siguiente al archivo de clase CacheDemo.asmx.cs. Agrega un atributo WebMethod denominado GetCacheEntryTime con un CacheDuration de 60 segundos.
    [WebMethod(CacheDuration=60)]
    public string GetCacheEntryTime(string Name)
    {
    	StringBuilder sb = new StringBuilder("Hi ");
    	sb.Append(Name);
    	sb.Append(", the Cache entry was made at ");
    	sb.Append(System.DateTime.Now.ToString());
    	
    	return(sb.ToString());
    }
    						
    Nota : forma predeterminada, el CacheDuration para un atributo WebMethod se establece en 0, lo que significa que no se almacena en caché.
  5. Dado que el código de ejemplo utiliza el método StringBuilder , incluir una referencia al espacio de nombres System.Text . El listado de espacio de nombres para el servicio Web similar a ésta:
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Diagnostics;
    using System.Web;
    using System.Web.Services;
    using System.Text;
    						
    Nota : para obtener más información acerca de la clase StringBuilder , visite el siguiente sitio Web de Microsoft Developer Network (MSDN):
    Clase StringBuilder
    http://msdn2.microsoft.com/en-us/library/system.text.stringbuilder(vs.71).aspx
  6. En el IDE de Visual Studio. NET, haga clic en Generar solución en el menú Generar .
  7. En el menú archivo , haga clic en Guardar todo para guardar el proyecto y los archivos asociados.

Probar el proyecto

Ahora que ha creado el servicio de ejemplo CacheDemo Web, ejecute el GetCacheEntryTime WebMethod para ver los efectos de la configuración de atributo CacheDuration :
  1. En el Explorador de soluciones, haga clic con el botón secundario del mouse en CacheDemo.asmx y, a continuación, haga clic en Ver en el explorador .

    Abre el archivo .asmx en el explorador y el atributo WebMethod de GetCacheEntryTime aparece como un elemento con viñetas en la parte superior de la página.
  2. Haga clic en el vínculo GetCacheEntryTime .
  3. En el cuadro nombre para el método, escriba Juan y a continuación, haga clic en invocar para ejecutar el atributo WebMethod y devolver el resultado XML. Observe la marca de tiempo que se devuelve en el mensaje.

    Nota : si la Ayuda de servicios Web de la página no aparece, puede ejecutar el método de servicio Web escribiendo lo siguiente en el cuadro Dirección en el Web explorador:
    http://localhost/wscachesample/cachedemo.asmx/GetCacheEntryTime?Name=Joe
    					
  4. Ejecute el WebMethod nuevo, escribiendo Joe . Nota : si ejecuta el atributo WebMethod en los período de tiempo que se especifica mediante el atributo CacheDuration de 60 segundos, aparece la misma marca de tiempo.
  5. Repita el paso 4, pero escribir Ana en lugar de Juan en el cuadro nombre para el parámetro de atributo WebMethod .

    Observe que el resultado de marca de tiempo es diferente. Esto se produce debido la salida predeterminada almacenamiento en caché el resultado se basa en los parámetros del atributo WebMethod . En este ejemplo, Juan es el valor del parámetro para las dos primeras pruebas y se devuelve el resultado en caché para la segunda prueba. Cuando Ana se utiliza en la tercera prueba, recibe un nuevo resultado. Si repetir la prueba de 60 segundos, recibirá un resultado en caché de salida. La diferencia en la versión de almacenamiento en caché de salida está relacionada con el parámetro del atributo WebMethod .

Solución de problemas

Cuando decida si va a implementar la caché de resultados para el servicio Web o no, recuerde que ese servidor recursos pueden verse afectados negativamente si los parámetros de atributo WebMethod que están asociados con las solicitudes varían ampliamente o si las respuestas implican grandes cantidades de datos.

Referencias

Para obtener más información sobre la propiedad WebMethodAttribute.CacheDuration y la clase WebMethodAttribute , vea el tema siguiente en la clase de .NET Framework documentación de la biblioteca:
WebMethodAttribute.CacheDuration (propiedad)
http://msdn2.microsoft.com/en-us/library/system.web.services.webmethodattribute.cacheduration(vs.71).aspx
Para información adicional acerca de los servicios Web, visite los sitios Web de MSDN siguientes:
Instrucciones de diseño para servicios Web XML creados mediante ASP.NET
http://msdn2.microsoft.com/en-us/library/w8excbb0(vs.71).aspx

Mediante el atributo WebMethod
http://msdn2.microsoft.com/en-us/library/byxd99hx(vs.71).aspx
Para ejemplos adicionales, documentación y vínculos relacionados con la programación con .NET Framework, visite el siguiente sitio CodePlex Web:
http://www.codeplex.com

Propiedades

Id. de artículo: 318299 - Última revisión: martes, 28 de agosto de 2007 - Versión: 6.5
La información de este artículo se refiere a:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 2.0
  • Microsoft Web Services Enhancements for Microsoft .NET 1.1
  • Microsoft Web Services (included with the .NET Framework) 1.0
  • Microsoft Visual C# .NET 2002 Standard Edition
Palabras clave: 
kbmt kbcaching kbhowtomaster KB318299 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 318299

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com