Как использовать файл WSDL для создания службы WCF (не звонить) - PullRequest
94 голосов
/ 04 июня 2009

У меня есть старый файл WSDL, и я хочу создать сервер на основе этого файла WSDL.

WSDL генерируется из ASMX (полагаю, но я не уверен).

Как мне этого добиться?


оригинальный вопрос , где ФП решил, что ему нужно создать клиента на основе WSDL.

Ответы [ 5 ]

110 голосов
/ 04 июня 2009

Используя svcutil, вы можете создавать интерфейсы и классы (контракты данных) из WSDL.

svcutil your.wsdl (or svcutil your.wsdl /l:vb if you want Visual Basic)

Это создаст файл с именем «your.cs» в C # (или «your.vb» в VB.NET), который содержит все необходимые элементы.

Теперь вам нужно создать класс «MyService», который будет реализовывать интерфейс службы (IServiceInterface) - или несколько интерфейсов служб - и это ваш экземпляр сервера.

Теперь сам по себе класс пока не очень помогает - вам нужно где-то разместить службу. Вам нужно либо создать свой собственный экземпляр ServiceHost, в котором размещается служба, настроить конечные точки и т. Д., Либо вы можете разместить свой сервис внутри IIS.

41 голосов
/ 04 июня 2009

Есть хорошие ресурсы, если вы знаете, что искать. Попробуйте "Контракт сначала" и WCF. или "WSDL First" и WCF.

Вот выбор:

29 голосов
/ 17 ноября 2010

Используйте svcutil.exe с ключом /sc для генерации контрактов WCF. Это создаст файл кода, который вы можете добавить в свой проект. Он будет содержать все интерфейсы и типы данных, необходимые для создания вашего сервиса. Измените расположение вывода с помощью переключателя /o, или вы можете найти файл в папке, в которой вы запустили svcutil.exe. Язык по умолчанию - C #, но я думаю (я никогда не пробовал), вы можете изменить это, используя /l:vb.

svcutil /sc "WSDL file path"

Если в WSDL есть какие-либо поддерживающие файлы XSD, передайте их в качестве аргументов после WSDL.

svcutil /sc "WSDL file path" "XSD 1 file path" "XSD 2 file path" ... "XSD n file path"

Затем создайте новый класс, который будет вашим сервисом, и реализуйте интерфейс контракта, который вы только что создали.

7 голосов
/ 04 июня 2009

Вы можете использовать svcutil.exe для генерации клиентского кода. Это будет включать в себя определение контракта на обслуживание, а также любые контракты с данными и требуемые контракты.

Затем просто удалите код клиента: классы, реализующие сервисные контракты. Затем вам нужно будет реализовать их самостоятельно, к вашим услугам.

3 голосов
/ 08 августа 2017

Используя инструмент «Добавить ссылку на службу» в Visual Studio, вы можете вставить адрес как:

Файл: ///path/to/wsdl/file.wsdl

И он загрузится правильно.

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