如何在没有svcutil.exe的情况下使用WCF服务?

Jad*_*ias 3 .net c# wcf client channelfactory

我没有得到以下帮助,我找到了2种使用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);
Run Code Online (Sandbox Code Playgroud)

要么

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

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

channelFactory.Close();
Run Code Online (Sandbox Code Playgroud)

我应该选择哪一个?

mar*_*c_s 5

您选择的标准是什么?

从功能上来说,两种方法最终都能正常工作,基本上可以给你相同的结果.

你想做什么决定?

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

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