Pregunta

Tengo un servicio web de consulta de datos de este archivo json, pero no quiero el servicio web para tener acceso al archivo cada vez.Estoy pensando que tal vez me puede almacenar los datos en algún otro lugar (tal vez en la memoria) por lo que el servicio web, puede obtener los datos a partir de allí la próxima vez que se está tratando de consulta de los mismos datos.Yo un poco a entender lo que hay que hacer, pero no estoy seguro de cómo hacerlo.¿Cómo podemos conservar los datos en un servicio web?

Actualización: Ambas sugerencias, el almacenamiento y el uso de las variables estáticas, se ven bien.Tal vez debería utilizar tanto así que puede verse en uno de los primeros, y si no está ahí, el uso de la segunda, si no existe, entonces voy a mirar en el archivo json.

¿Fue útil?

Solución

Se extiende en Hielo^^Calorla idea de que usted puede ser que desee pensar acerca de donde usted caché - ya sea en caché el contenido del archivo json en la caché de la Aplicación, así:

Context.Cache.Insert("foo", _
                 Foo, _
                 Nothing, _
                 DateAdd(DateInterval.Minute, 30, Now()), _
                 System.Web.Caching.Cache.NoSlidingExpiration)

Y, a continuación, generar los resultados que usted necesidad de que en cada golpe.Alternativamente, usted puede almacenar en caché el webservice de salida en la definición de la función:

<WebMethod(CacheDuration:=60)> _
Public Function HelloWorld() As String
    Return "Hello World"
End Function

La información recopilada de Servicio Web XML Estrategias de almacenamiento en Caché.

Otros consejos

¿Qué acerca del uso global o estática objeto de colección?Es una buena idea?

ASP.NET almacenamiento en caché funciona igual de bien con los servicios Web de modo que usted puede implementar regular el almacenamiento en caché, como se explica aquí: http://msdn.microsoft.com/en-us/library/aa478965.aspx

A echo klughing, si sus datos en JSON no se espera que cambie a menudo, creo que la forma más sencilla de caché es estática de la colección de algún tipo, tal vez un DataTable.

En primer lugar, analizar sus datos JSON en un Sistema.De datos.DataTable, y hacerla estática en su clase de servicio Web.A continuación, acceso al objeto estático.Los datos deben permanecer en caché hasta que IIS recicla su aplicación a la piscina.

public class WebServiceClass
{
    private static DataTable _myData = null;
    public static DataTable MyData
    {
        get
        {
            if (_myData == null)
            {
                _myData = ParseJsonDataReturnDT();
            }
            return _myData;
        }
    }

    [WebMethod]
    public string GetData()
    {
        //... do some stuff with MyData and return a string ...
        return MyData.Rows[0]["MyColumn"].ToString();
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top