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


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

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

Как я могу этого достичь ?


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

5 94

5 ответов:

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

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

это создаст файл с именем " ваш.cs "в C# (или" ваш.vb " in VB.NET) который содержит все необходимые элементы.

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

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

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

здесь:

используйте svcutil.exe с помощью /sc переключитесь для создания контрактов WCF. Это создаст файл кода, который можно добавить в проект. Он будет содержать все интерфейсы и типы данных, необходимые для создания службы. Измените местоположение вывода с помощью /o переключатель, или вы можете найти файл в папке, где вы запустили svcutil.исполняемый. По умолчанию используется язык 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, вы можете вставить адрес как:

:///путь/к файлу/файл WSDL/.wsdl

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