Question

J'ai un service Web qui interroge les données de ce fichier json, mais je ne veux pas que le service Web doive accéder au fichier à chaque fois.Je pense que je peux peut-être stocker les données ailleurs (peut-être en mémoire) afin que le service Web puisse simplement obtenir les données à partir de là la prochaine fois qu'il essaiera d'interroger les mêmes données.Je comprends un peu ce qui doit être fait, mais je ne sais tout simplement pas comment le faire.Comment conserver les données dans un service Web ?

Mise à jour:Les deux suggestions, la mise en cache et l'utilisation de variables statiques, semblent bonnes.Peut-être que je devrais simplement utiliser les deux pour pouvoir en regarder un en premier, et s'il n'y est pas, utiliser le second, s'il n'y est pas non plus, alors je regarderai le fichier json.

Était-ce utile?

La solution

S'étendre sur Glace ^ ^ ChaleurDans l'idée de, vous voudrez peut-être réfléchir à l'endroit où vous mettrez en cache - soit mettre en cache le contenu du fichier json dans le cache de l'application, comme ceci :

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

Et puis générez les résultats dont vous avez besoin à chaque coup.Vous pouvez également mettre en cache la sortie du service Web sur la définition de fonction :

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

Informations recueillies auprès de Stratégies de mise en cache des services Web XML.

Autres conseils

Qu’en est-il de l’utilisation d’un objet de collection global ou statique ?est-ce une bonne idée?

La mise en cache ASP.NET fonctionne aussi bien avec les services Web, vous pouvez donc implémenter une mise en cache régulière comme expliqué ici : http://msdn.microsoft.com/en-us/library/aa478965.aspx

Faire écho klughing, si vos données JSON ne devraient pas changer souvent, je pense que le moyen le plus simple de les mettre en cache est d'utiliser une collection statique quelconque - peut-être un DataTable.

Tout d’abord, analysez vos données JSON dans un System.Data.DataTable et rendez-les statiques dans votre classe de service Web.Ensuite, accédez à l’objet statique.Les données doivent rester en cache jusqu'à ce qu'IIS recycle votre pool d'applications.

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();
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top