我有一个使用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/