Как создать прокси для службы wcf - PullRequest
4 голосов
/ 12 февраля 2010

Как сгенерировать прокси, Вот мой сервис:

using System;

// Service.cs file
namespace FirstWcfService
{
    public class Service : IService
    {
        #region IService Members

        public string Hello()
        {
            return ("Hello WCF");
        }

        #endregion
    }
}

Ответы [ 2 ]

9 голосов
/ 12 февраля 2010

Прежде всего, убедитесь, что ваш сервис, на который вы хотите сослаться, запущен и работает.

Затем в обозревателе решений Visual Studio выполните команду ping «Добавить ссылку на службу»:

alt text

В появившемся диалоговом окне введите адрес своей услуги и нажмите «Перейти»:

alt text

Это должно подключиться к вашему сервису, обнаружить метаданные, и, если все пойдет хорошо, вы увидите свой сервис (контракт на обслуживание и его методы) в средней части экрана:

alt text

Прежде чем вы слишком быстро нажмете "ОК" - обратите внимание на текстовое поле "Пространство имен" в левом нижнем углу - вы можете ввести пространство имен, в котором будет жить ваша справочная служба (классы, которые она генерирует). Я обычно использую что-то вроде (project).(servicename).Adapter - выбирайте то, что имеет для вас смысл.

Теперь в обозревателе решений вы увидите новый значок для службы, на которую вы только что ссылались - когда вы нажмете кнопку «Показать все файлы» на панели инструментов Solution Explorer, вы увидите все файлы которые были созданы. Тот, где живут ваши классы, всегда называется Reference.cs.

alt text

Когда вы осмелитесь открыть этот файл :-), вы увидите, что у вас будет класс с именем (yourservicename)Client, который вам нужно создать в своем клиентском коде - он будет содержать все определенные методы обслуживания, по которому теперь можно звонить с вашего кода:

alt text

Надеюсь, это поможет!

2 голосов
/ 12 февраля 2010

После того, как вы настроили доступ к службе WCF, у вас есть два варианта:

Первый вариант - использовать автоматически сгенерированный объект

var proxy = new MyServiceProxyClient();
proxy.open();
//do work
proxy.close();

Вариант 2 - использовать фабрику каналов

ChannelFactory<IMyService> channel =
   new ChannelFactory<IMyService>("bindingNameFromYourConfigFile");
IMyService client = channel.CreateChannel();

client.DoAwesomeStuff();

Это довольно информативное сообщение в блоге , о котором вы можете прочитать, когда и зачем использовать каждый из этих методов. Этот скринкаст вам тоже поможет.

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