3

我发现了两种在没有以下帮助的情况下使用 WCF 服务的方法svcutil.exe

  • ClientBase<IService>
  • ChannelFactory<IService>

我知道ClientBase可能使用ChannelFactory. 但我说的是在写作之间进行选择:

public sealed class ServiceClient 
    : ClientBase<IService>, IService
{
    ReturnType IService.MethodName(ParameterType parameterName)
    {
        return Channel.MethodName(parameterName);
    }
}

// later
IService client = new ServiceClient();
var result = client.MethodName(parameterName);

或者

ChannelFactory<IMyService> channelFactory = new ChannelFactory<IMyService>();
channelFactory.Open();

var channel = channelFactory.CreateChannel(); 
var result = channel .MethodName(parameterName);

channelFactory.Close();

我应该选择哪一个?

4

1 回答 1

5

你选择的标准是什么?

最后,从功能上讲,这两种方法都可以正常工作,并且基本上会给您相同的结果。

你想根据什么做出决定?

我的建议:选择你觉得更舒服的风格!使用 的方法ChannelFactory<IService>可能需要您编写越来越少的普通代码 - 所以也许这对这种方法来说有点优势。

这两种方法都要求您在通道的两端都有 .NET,并且服务和客户端与其中的服务和操作合同共享一个公共程序集 - 因为客户端必须至少知道服务接口才能使用连接到服务的两种方式之一。

于 2011-01-06T16:45:19.677 回答