WCF ChannelFactory(缓存,例外)

时间:2017-06-07 07:16:24

标签: c# .net wcf caching channelfactory

我有一个Web应用程序,通过与其他第三方Web服务的连接为用户提供服务。

我不确定在我的应用程序中创建这些Web服务客户端的安全/有效方法。

从.NET 4.5开始,我可以通过设置静态CacheSetting属性来使用通过svcutil和缓存通道工厂生成的客户端代码。

来自MSDN网站的示例:

class Program   
{   
   static void Main(string[] args)   
   {   
      ClientBase<ITest>.CacheSettings = CacheSettings.AlwaysOn;   
      foreach (string msg in messages)   
      {   
         using (TestClient proxy = new TestClient (new BasicHttpBinding(), new EndpointAddress(address)))   
         {   
            // ...  
            proxy.Test(msg);   
            // ...  
         }   
      }   
   }   
}  
// Generated by SvcUtil.exe     
public partial class TestClient : System.ServiceModel.ClientBase, ITest { }  

因此,无需自定义实现以下所述的功能:

同样,MSDN声明我们不应该使用C#“using”语句在使用类型化客户端时自动清理资源并使用try / catch处理它。

来自MSDN网站的示例:

try  
{  
    ...  
    double result = client.Add(value1, value2);  
    ...  
    client.Close();  
}  
catch (TimeoutException exception)  
{  
    Console.WriteLine("Got {0}", exception.GetType());  
    client.Abort();  
}  
catch (CommunicationException exception)  
{  
    Console.WriteLine("Got {0}", exception.GetType());  
    client.Abort();  
}  

1)上述调用服务的方式是否安全?我错过了什么吗?或者最好手动处理工厂创建?

2)我是否会对故障状态(工厂/渠道)有任何问题?

3)我需要为每个服务调用创建一个新客户端吗?

0 个答案:

没有答案