asp.net-mvc - WCF客户端实例化

标签 asp.net-mvc wcf web-services

我有一个使用WCF服务(WSHttpBinding)的mvc Controller 类,有时在一个http请求中多次调用,并且想知道为该服务创建客户端的代价是多少。是否可以为每个调用创建客户端实例,还是应该在该类中创建成员变量?

public class RingbacksController : Controller
{
    private void LoadContactsIntoViewData(int page)
    {
                RingbackServiceClient client = new RingbackServiceClient();
        ...
        client.Close();
    }

    private void LoadGroupsIntoViewData(int page)
    {
                RingbackServiceClient client = new RingbackServiceClient();
        ...
        client.Close();
    }
}

或者
public class RingbacksController : Controller
{
    private RingbackServiceClient client = new RingbackServiceClient();

    private void LoadContactsIntoViewData(int page)
        {
        ...
        client.Close();
    }

    private void LoadGroupsIntoViewData(int page)
    {
        ...
        client.Close();
    }
}

最佳答案

创建客户端通常不是一件很昂贵的操作-因此您应该在需要时实例化它(正如史蒂文提到的-如果由于错误而导致错误,无论如何都需要这样做)。

如果您要使用ChannelFactory创建 channel (这是实现 channel 的方法之一),则另一方面,创建ChannelFactory是一项非常繁重且耗时的操作,因此,最好坚持使用ChannelFactory实例的使用时间尽可能长。

马克

关于asp.net-mvc - WCF客户端实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1207722/

相关文章:

mysql - 根据 MySQL 中的日期选择记录

c# - Validator 未识别 RegularExpression 数据注释

c# - 在 Windows 应用商店应用程序中使用 Azure 表存储的最佳实践是什么?

每次调用时都会调用 WCF 服务类静态构造函数

c# - 无法将对象发送到 SOAP Web 服务

java - 如何在 JAX-WS Web 服务中生成有意义的列表名称

javascript - jQuery 选择何时属性名称以?

asp.net-mvc - Linux 上的 aspnet core 1.0 完整的 .net 框架

asp.net - 困惑于在 Azure 部署的 Web.config 中存储密码的正确过程是什么

wcf - 为什么不推荐使用 [DataMember(EmitDefaultValue = false)]?