gpt4 book ai didi

c# - 我是否需要在 ASP.NET 中配置 Web 服务引用?

转载 作者:可可西里 更新时间:2023-11-01 08:55:03 25 4
gpt4 key购买 nike

垃圾收集器是否会清理 Web 服务引用,或者我是否需要在完成调用任何方法后调用服务引用上的处置?

最佳答案

不必担心处理您的网络服务,您可以只保留每个网络服务的一个实例,使用 singleton pattern . Web 服务是无状态的,因此它们可以在 Web 服务器上的连接和线程之间安全地共享。

这是一个 Web 服务类的示例,您可以使用它来保存对您的 Web 服务实例的引用。这个单例是惰性和线程安全的。建议如果你让你的单例变得懒惰,那么它们也可以通过遵循相同的逻辑来保持线程安全。要了解有关如何执行此操作的更多信息,请阅读 Implementing Singletons 上的 C# 深入文章。 .

另请记住,您可能会遇到 WCF 网络服务问题。我建议阅读 WCF's instance management techniques article ,特别是单例部分,了解更多详细信息。

public static class WS
{
private static object sync = new object();
private static MyWebService _MyWebServiceInstance;

public static MyWebService MyWebServiceInstance
{
get
{
if (_MyWebServiceInstance == null)
{
lock (sync)
{
if (_MyWebServiceInstance == null)
{
_MyWebServiceInstance= new MyWebService();
}
}
}
return _MyWebServiceInstance;
}
}
}

然后当您需要访问您的网络服务时,您可以这样做:

WS.MyWebServiceInstance.MyMethod(...)

var ws = WS.MyWebServiceInstance;
ws.MyMethod(...)

我已经在几个项目中成功地使用了这种模式并且效果很好,但正如 tvanfosson 在下面的评论中提到的,更好的策略是使用 DI 框架来管理您的 Web 服务实例。

关于c# - 我是否需要在 ASP.NET 中配置 Web 服务引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/429478/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com