|
Bas de page | |
---|---|
Auteur | Sujet : [ASP.NET] Gérer une collection d'objet persistante niveau application |
Publicité | Posté le 06-07-2010 à 17:47:29 |
TotalRecall | Quand tu fais du Webservice tu as accès aux mêmes fonctionnalités que dans une WebApp classique, notamment HttpContextCurrent.Cache, qui offre la possibilité de spécifier la durée de vie des objets lors de leur insertion. Il me semble qu'à l'expiration d'un objet dans le cache tu peux faire lever un événement. Tu peux aussi développer ta propre classe de cache, sous forme de singleton par exemple, qui te fournit les mêmes fonctionnalités. Ca n'est pas bien long à faire si tu n'as besoin que de la mise en cache et de la gestion d'une durée de vie et ça permet d'avoir la main sur le code, d'autant que tu n'as qu'un nombre limité d'infos à manipuler. Dans ce cas attention aux problèmes de concurrence et synchronisation, notamment si plusieurs instances du service tournent en même temps (load balancing, etc). Pense à mettre des lock{} lors des accès à la collection, etc. Tu peux gérer l'expiration de plusieurs façons, plus ou moins simples. Message édité par TotalRecall le 06-07-2010 à 20:49:41 --------------- Réalisation amplis classe D / T Topic .Net - C# @ Prog |
TotalRecall | Pas touche au application_start, tu n'en as pas besoin. Instanciation lors de l'appel (respecte le modèle "propre" pour faire du singleton en c#, pas besoin de bricoler un truc exotique). --------------- Réalisation amplis classe D / T Topic .Net - C# @ Prog |
TotalRecall | Tu ne dois pas surtout pas exposer directement la collection à l'extérieur, passe par des méthodes qui interceptent les accès (et profite en pour proposer des méthodes "intelligentes" du genre récupérer truc en fonction de machin) Remarque perso : GetDataCache() c'est verbeux, si tu n'as pas besoin de paramètre, fais plutôt une propriété, et appelle la Instance. Tip : l'instanciation ne doit pas être faite à l'extérieur, le singleton doit se suffire à lui même. L'astuce c'est qu'au premier appel à GetDataCache() (comme tu l'as appelé dans ton cas), si _instance est null on invoque le constructeur du singleton, sinon on renvoie _instance, le tout protégé comme il se doit (lock). edit : Un petit lien MS sur un modele de singleton : http://msdn.microsoft.com/en-us/library/ff650316.aspx En pratique il y a des dizaines de variantes (double lock, lazy/full instanciation, etc), certains se sont même essayés à créer des singleton génériques/dérivables. Mais dans ton cas cet exemple basique ira très bien. Message édité par TotalRecall le 07-07-2010 à 18:02:29 --------------- Réalisation amplis classe D / T Topic .Net - C# @ Prog |
TotalRecall | Je viens de voir que tu fais un new() sur la ligne où tu déclares ton instance, mea culpa. --------------- Réalisation amplis classe D / T Topic .Net - C# @ Prog |
ov3rflow Overrage | oui oui l'instanciation se fait bien lors de la première récupération de l'objet:
Message édité par ov3rflow le 07-07-2010 à 18:07:59 |
ov3rflow Overrage | Donc sur ton conseil:
Message édité par ov3rflow le 07-07-2010 à 18:12:27 |
TotalRecall | Le post au dessus est un peu bordélique et je l'ai pas mal édité, désolé si tout n'est pas clair . N'hésite pas si tu as des questions. Il y a aussi le topic blabla .Net qui peut aider edit :
Message cité 1 fois Message édité par TotalRecall le 07-07-2010 à 18:14:31 --------------- Réalisation amplis classe D / T Topic .Net - C# @ Prog |
Publicité | Posté le 07-07-2010 à 18:13:47 |
ov3rflow Overrage |
|
TotalRecall | Euh je divague, c'est à cause de la phrase au dessus, je croyais que tu disais que ton Instance (pour accéder au singleton) serait une méthode et non une propriété --------------- Réalisation amplis classe D / T Topic .Net - C# @ Prog |
ov3rflow Overrage | ok
|
TotalRecall | Non non, je t'en prie, c'est moi . A un mot près le sens changeait complètement et c'est la phrase au dessus qui m'a foutu dedans . --------------- Réalisation amplis classe D / T Topic .Net - C# @ Prog |
TotalRecall | Hello,
--------------- Réalisation amplis classe D / T Topic .Net - C# @ Prog |
ov3rflow Overrage | |
Sujets relatifs | |
---|---|
perl Net::Telnet : comment choisir l'interface ? | [VB.NET] Remplir table Access |
[ASP .Net / C#] Gridview : Personnalistation du Pager | installation du module Net::SCP |
afficher un objet de transmission d'un lien | [HTML/JS] application du setTimeOut pour un effet "machine à ecrire" |
problème au niveau de struts-config.xml | Choix de langage pour une application "widget-like" |
gérer plusieurs flux | |
Plus de sujets relatifs à : [ASP.NET] Gérer une collection d'objet persistante niveau application |