【问题标题】:Best practices with creating and closing WCF clients for async methods为异步方法创建和关闭 WCF 客户端的最佳实践
【发布时间】:2012-04-28 23:56:13
【问题描述】:

我熟悉创建 WCF 客户端、调用标准方法、然后在完成后关闭或中止客户端的最佳实践,但我想知道客户端的异步方法。

我有一个管理器类,它有一些传递事件供消费类附加,以便检索异步调用的结果。例如:

internal sealed class CommController
{
    public event GetClientIdEventHandler ClientIdReceived;

    private readonly LocalCommSvcClient _localCommSvcClient = new LocalCommSvcClient();

    public CommController()
    {
        _localCommSvcClient.GetClientIdCompleted += (o, e) => ClientIdReceived(o, e);
    }

    public void GetClientIdAsync()
    {
        _localCommSvcClient.GetClientIdAsync();             
    }
}

但我没有看到客户在哪里关闭和/或处置。我真的找不到太多关闭 WCF 客户端的最佳实践,因为它与异步使用有关。我应该把 .Close() 和/或 .Abort() 调用放在哪里?

【问题讨论】:

  • 我认为它经历了一个标准的 REST 请求/响应周期(可能通过 HTTP),由于它是无状态的,因此无需“关闭”客户端,因为一开始并没有真正打开任何东西地方。尽管我在这方面可能大错特错,但我并没有乐于深入了解 WCF 的真正细节。

标签: c# .net wcf asynchronous


【解决方案1】:

您需要先打开()一个客户端,然后才能像使用同步客户端一样发送消息。 在不再需要通信后(至少在您收到响应时),您应该关闭()它以释放资源。 详细信息取决于服务的绑定和行为配置。 参见例如http://msdn.microsoft.com/en-us/library/system.servicemodel.servicebehaviorattribute.instancecontextmode.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    • 2023-04-10
    • 2020-05-14
    • 2012-02-25
    • 2013-02-25
    • 1970-01-01
    相关资源
    最近更新 更多