Dois-je disposer d'une référence de service Web dans ASP.NET?
Ne le garbage collector propre web références de service ou dois-je appeler à disposer sur le service de référence après que j'ai fini d'appel quelle que soit la méthode que j'ai appel?
source d'informationauteur BeaverProj
Vous devez vous connecter pour publier un commentaire.
Au lieu de se soucier de disposer de vos services web, vous pouvez conserver qu'une seule instance de chaque service web, à l'aide d'un le pattern singleton. Les services Web sont des apatrides, de sorte qu'ils peuvent en toute sécurité être partagé entre les connexions et les fils sur un serveur web.
Voici un exemple d'une classe de Service Web que vous pouvez utiliser pour contenir des références à votre site web instances de service. Ce singleton est paresseux et thread-safe. Il est conseillé que si vous faites votre singletons paresseux, ils sont également conservées thread-safe, en suivant la même logique. Pour en savoir plus sur la façon de faire cela, lisez le C# article En Profondeur sur La Mise En Œuvre Des Singletons.
Aussi garder à l'esprit que vous risquez de rencontrer des problèmes avec les services web WCF. Je vous recommande la lecture sur La WCF exemple les techniques de gestion de l'articleplus précisément le singleton section, pour plus de détails.
Et puis quand vous en avez besoin pour accéder à votre service web, vous pouvez faire ceci:
ou
J'ai utilisé avec succès ce modèle sur plusieurs projets et il a bien fonctionné, mais comme tvanfosson mentionne dans les commentaires ci-dessous, une meilleure stratégie serait d'utiliser un DI-cadre pour gérer vos instances de service web.
Je pense que l'instance DataService hérite de Disposer de Composants.
Objets qui implémentent IDispose doivent être éliminés manuellement pour aider le garbage collector.
Si vous objet est de courte durée, utiliser un
using
bloc. Pour les objets qui peuvent être conservés de s'assurer qu'ils l'objet qui retient dispose d'entre eux quand il est également cédé.- ce que vous essayez d'accomplir ici?
Si votre inquiet au sujet de la performance, alors je voudrais vous inquiétez plus au sujet de la réactivité du serveur hébergeant le webservice et de la vitesse du réseau, car ils peuvent considérablement affecter la longueur de temps vous devez attendre pour le webservice appel à la fin (à moins que sa asynchrone).
Les exemples sur le site MSDN de ne pas les appeler "Jeter" et son tout à fait évident que le garbage collector fera son travail, donc à moins que votre travail sur un système en temps réel qui doit traiter plus de 100 000 enregistrements dans la mémoire de chaque seconde, alors peut-être que vous n'avez pas besoin de venir avec un moyen de disposer de ressources ou de gérer la mémoire.