ChannelFactory <T>без интерфейса - PullRequest
2 голосов
/ 20 февраля 2012

В настоящее время я пытаюсь создать REST-прокси, который вызывает службу WCF SOAP, я застрял, пытаясь создать канал для отправки сообщения.Я знаю, что мне нужно использовать ChannelFactory, но у меня нет интерфейса службы.Могу ли я передать значение по умолчанию?Есть ли другой способ упаковать сообщение?

Когда я говорю сообщение, я имею в виду один из ServiceModels.Channels.Message.

Я очень новичок в этом, поэтому любая помощь будет оценена.

Ответы [ 2 ]

5 голосов
/ 21 февраля 2012

Вы можете сгенерировать клиента WCF из контракта на обслуживание WSDL одним из двух способов:

В любом случае будут созданы классы .NET, соответствующие типам, указанным в контракте на обслуживание, а также Клиентский прокси-класс WCF , который можно использовать для вызова операций службы:

try
{
    var client = new MyServiceClient();
    client.DoSomething();
    client.Close();
}
catch
{
    if (client != null)
    {
         client.Abort();
    }
}

Если вы предпочитаете использовать более низкий уровень ChannelFactory API , вам следует использовать сгенерированный Интерфейс IClientChannel вместо:

try
{
    var factory = new ChannelFactory<MyServiceChannel>();
    var client = factory.CreateChannel();
    client.DoSomething();
    client.Close();
}
catch
{
    if (client != null)
    {
         client.Abort();
    }
}
2 голосов
/ 20 февраля 2012

ChannelFactory.CreateChannel создает объект, который реализует предоставленный интерфейс и IClientChannel. Этот интерфейс должен соответствовать сервису.

Вам не нужна та же DLL, которую использует служба. Вы можете создать свой собственный интерфейс, соответствующий определению сервиса. В атрибуте ServiceContract установите Имя и Пространство имен, чтобы они соответствовали сервису.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...