Как использовать веб-службу WCF через URL-адрес во время выполнения?
Я хочу получить доступ ко всем методам, выставленным в службе через URL.
если предположить, что URL-адрес будет:
http://localhost/MyService/MyService.svc
Как получить доступ к методам:
- если у меня есть ServiceReference
- и что мне делать, если у меня нет справочной службы.
Ответы
Ответ 1
Чтобы использовать службу WCF, вам необходимо создать прокси-сервер WCF.
В Visual Studio вы щелкните правой кнопкой мыши проект и выберите "Добавить ссылку на службу" из контекстного меню. Введите URL-адрес, к которому вы хотите подключиться, и если эта служба запущена, вы должны получить прокси файл клиента, созданный для вас.
Этот файл обычно будет содержать класс под названием MyService Клиент. Вы можете создать экземпляр этого класса, и вы должны увидеть все доступные методы в этом классе клиента в вашем распоряжении.
Если вы не хотите добавлять ссылку на службу в Visual Studio, вы можете добиться того же результата, выполнив инструмент командной строки svcutil.exe
- это также сгенерирует для вас все необходимые файлы для вашего прокси-класса клиента.
Марк
UPDATE:
если вы хотите инициализировать прокси-сервер клиента во время выполнения, вы можете это сделать - вам нужно будет решить, какую привязку использовать (транспортный протокол) и какой адрес подключиться, а затем вы можете сделать:
BasicHttpBinding binding = new BasicHttpBinding();
EndpointAddress address = new EndpointAddress("http://localhost:8888/MyService");
MyServiceClient serviceClient = new MyServiceClient(binding, address);
Но даже в этом случае вам нужно сначала импортировать и создать прокси-клиент, используя инструменты "Добавить служебную ссылку" или svcutil.exe.
Ответ 2
Ответьте, как это сделать, не имея ссылки на службу. Посмотрите здесь (опция #a):
Написание первого клиента WCF
Вам все еще нужна ссылка (а именно ссылка на сборку, содержащую контракт/интерфейс), но вы не делаете ссылку на службу.
EDIT:
Хотя это возможно, я бы не рекомендовал его. Производительность не совсем велика, когда вам приходится создавать прокси-серверы, подобные этому. Обычно я использую svcutil.exe и создаю сборку, содержащую моих клиентов, и создаю ссылку на эту сборку. Таким образом, у вас есть больше возможностей для управления прокси-серверами.
Ответ 3
Вы также можете использовать класс WebClient для вызова службы WCF без необходимости прокси-сервера службы. Эффективно вы можете отправлять и получать строки и двоичные данные, а также имитировать POST.
Я использую его для многоразовых компонентов, где разработчик может никогда не создавать необходимые прокси-методы. Хорошее сравнение способов выполнения POST доступно здесь.
Ответ 4
Вы можете просто предоставить wsdl вашего сервиса: http://localhost/MyService/MyService.svc?wsdl.
Из wsdl вы можете создавать прокси-классы и использовать их на клиенте.