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

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

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

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


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

Ответ 1

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

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

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

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

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

Ответ 2

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

Вот выбор:

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

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

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

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