WCF:让客户活着,并有时间关闭它



我在WCF服务API

周围有一个包装器
Class APIWrapper
{
   private WCFClient _client;
   //constructor opens a client connection
   public APIWrapper()
   {
      _client = new WCFClient();
      _client.open();
   }
   public API1()
   {
       _client.doSomething1();
   }
   public API2()
   {
       _client.doSomething2();
   }
}

我想问:

Q1会发生超时例外吗?如果此包装器类实例存在太长时间了?(默认情况下,WCF连接吗?例如,在构建包装器类之后,其API1或API2在10分钟后调用,该分析比此WCF连接的超时值更长。

Q2我需要明确关闭连接吗?

~APIWrapper
{
    if(_client !=null)
    try{
         _client.close();  }
    catch(Exception e){
         _client.Abort();   }
}

我不确定您为什么要这样做,但是如果WCF托管在IIS7中,WCF将以有或没有连接开头,没有意义,保持连接活跃。<<<<<<<<<<<<<<<</p>

根据我的经验,当无状态时,这些服务效果最好(除非您有充分的理由)。我强烈建议每次打开并关闭连接。如果您正在这样做以进行性能,则有其他方法可以避免每次关闭和打开。

Q1:根据MSDN,OpenTimeout为1分钟

http://msdn.microsoft.com/en-us/library/system.servicemodel.channels.binding.opentimeout.aspx

Q2:您无需明确关闭连接,但这是一个很好的做法,我强烈建议这样做。不关闭连接可能会导致WCF上的开销。

,据我所知,wcf不要保持连接的活力。在预定义的时间通过(intactivityTimeout =" 00:10:00")之后,当您尝试调用_client.dosomething.dosomething1()或服务上的任何其他方法时,连接将引发异常。

wcf无活动超时

要保持连接活着,您应该以预定义的间隔调用一种简单的方法,可以说每1分钟。

但是,我同意乔迪的观点,您应该使用WCF服务无状态,直到确实有必要为止。

相关内容

  • 没有找到相关文章

最新更新