2011-01-06 3 views
3

я нашел 2 способа потребляя службы WCF без помощи от svcutil.exe:Как использовать службы WCF без svcutil.exe?

  • ClientBase<IService>
  • ChannelFactory<IService>

Я знаю, что, вероятно, использует ClientBaseChannelFactory. Но я говорю о выборе между написанием:

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(); 

Какой я должен выбрать?

ответ

5

Какие качества вы выбрали?

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

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

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

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

Смежные вопросы