| |||||
FORUM HardWare.fr

Programmation

C#/.NET managed

[ASP.NET] Gérer une collection d'objet persistante niveau application| 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 --------------- 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). --------------- 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 --------------- 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. --------------- Topic .Net - C# @ Prog |
ov3rflow How Do You Do, Fellow Kids? | 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 How Do You Do, Fellow Kids? | 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 edit :
Message cité 1 fois Message édité par TotalRecall le 07-07-2010 à 18:14:31 --------------- Topic .Net - C# @ Prog |
Publicité | Posté le 07-07-2010 à 18:13:47 ![]() ![]() |
ov3rflow How Do You Do, Fellow Kids? |
|
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é --------------- Topic .Net - C# @ Prog |
ov3rflow How Do You Do, Fellow Kids? | ok |
TotalRecall | Non non, je t'en prie, c'est moi --------------- Topic .Net - C# @ Prog |
TotalRecall | Hello,
--------------- Topic .Net - C# @ Prog |
ov3rflow How Do You Do, Fellow Kids? | |
FORUM HardWare.fr

Programmation

C#/.NET managed

[ASP.NET] Gérer une collection d'objet persistante niveau application| 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 | |



