Как использовать службы WCF без svcutil.exe? - PullRequest
3 голосов
/ 06 января 2011

Я нашел 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);

или

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

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

channelFactory.Close();

Какой из них выбрать?

1 Ответ

5 голосов
/ 06 января 2011

Каковы ваши критерии выбора?

Функционально, в конце концов, оба подхода работают просто отлично и в основном дают одинаковый результат.

На чем вы хотите основывать свое решение?

Мой совет: выбирайте стиль, который вам удобнее! Подход с ChannelFactory<IService>, вероятно, требует, чтобы вы писали все меньше и меньше обыденного кода - так что, возможно, это было бы небольшим преимуществом для этого подхода.

Оба подхода требуют, чтобы у вас был .NET на обоих концах канала, и чтобы служба и клиент совместно использовали общую сборку с контрактами на обслуживание и операции в них - поскольку клиент должен знать хотя бы интерфейс службы, чтобы возможность использовать любой из двух способов подключения к услуге.

...