Как использовать файл 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.
Вот выбор:
- Базовый обзор разработки WSDL-First с WCF и SvcUtil.exe.
- WSCF - бесплатная надстройка для Visual Studio, позволяющая проектировать Contract-First с WCF
- Статья о том, как создать WSDL "WCF-Friendly"
Используйте 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
И он будет загружаться правильно.