c# 如何在客户端管理 wcf 服务代理生命周期?

标签 c# .net wcf service client

我编写了一个具有一些常规功能(添加用户、删除、搜索、更新...)的 WCF 服务。此功能的实现是在 Entity Framework 中(使用 sql DB)。

现在我想在客户端使用它。 我有一些基本问题:

  1. 我在客户端多次调用 WCF 方法 - 我是否应该在每次调用时都 try catch ?
  2. 每次我想调用一个方法,例如 AddUser(User user),我需要创建一个服务实例,如下所示:

    WcfService client = new WcfService();
    client.AddUser(user);
    

    在另一个地方我写:

    WcfService client = new WcfService(); //Again making a new instance...
    client.UpdateUser(user);
    

我应该为我的 wcf 服务的所有应用程序创建一个实例吗? 或者每次在我调用方法之前创建一个新实例? (如我上面的例子)。

非常感谢!

最佳答案

在许多情况下,您希望重复使用相同的客户端代理,因为这种连接方法会产生最佳性能。如果您使用具有高初始安全协商成本的安全功能,那么重复使用相同的代理会特别有益。注意:您肯定需要在使用前检查客户端代理的状态。

如果无法重复使用相同的客户端代理,则考虑使用使用缓存的 ChannelFactory 代理。

以下链接提供了很好的解释以及最佳实践建议: http://blogs.msdn.com/b/wenlong/archive/2007/10/27/performance-improvement-of-wcf-client-proxy-creation-and-best-practices.aspx

关于c# 如何在客户端管理 wcf 服务代理生命周期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18960145/

相关文章:

c# - 如何解码 WCF 中的多部分/相关响应?

c# - CRM LINQ 复合联接 "The method ' 不支持联接”错误

c# - 来自数据库的图像显示在 PicutreBox 中,使用 LINQ 查询

c# - 协方差和 IList

c# - 如何使用 Npoco FetchOneToMany?

c# - 使用 net.msmq 绑定(bind)在 IIS 中托管的 WCF 服务会产生问题

c# - 什么是 C# 中的 = Not(VB)

c# - 从许多多边形的并集构造多边形

.net - 将超链接设置为 RichTextBox

c# - 如何使用反射和app.config调用wcf?