Как использовать файл WSDL для создания службы WCF (не звонить)

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

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

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


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

5 ответов

Решение

Используя 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.

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

Вот выбор:

Используйте 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"

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

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

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

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

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

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

Другие вопросы по тегам