2013-10-11 2 views
1

Предусмотрен ли какой-либо стандарт, который веб-служба должна предоставить WSDL, добавив ?wsdl к адресу конечной точки?Обязательно иметь определение WSDL с помощью? Wsdl?

OK, если WSDL размещен на другом URL-адресе (без добавления ?wsdl)?

Например:

Endpoint: http://abc.xyz.com/MyService 
WSDL:  http://abc.xyz.com/MyServiceDefinition.pqr 

Обратите внимание, что я даже используя различные расширения для определения WSDL.

Использует ли этот подход какие-либо стандарты или может принимать вещи так, как они хотят?

ответ

1

Нет, его необязательно иметь доступ к wsdl, но его рекомендуется. Стоит отметить, что большинство клиентов попытаются добавить «? Wsdl» к вашему URL-адресу и попытаются получить доступ к WSDL-файлу, поэтому настоятельно рекомендуется его настроить.

+0

Я также придерживаюсь того же мнения, но не могу найти какой-либо ссылочный документ/ссылку, которая проверяет его с точки зрения стандартов. Это необходимо для совместного использования с заинтересованными сторонами. У меня была одна ссылка, но я потерял ее как-то. Можете ли вы указать мне ссылку? – CuriousMind

+0

У меня нет ссылки для ссылки (не найти какой-либо). Если это официальная вещь, у нас должна быть ссылка. Отсутствие ссылки * может * указать, что оно не является официальным. –

1

Обязательно ли иметь определение WSDL с использованием ?wsdl?

Нет, это не так.

WSDL используется для описания контракта на веб-сервис и предоставляется, поскольку он позволяет инструментам автоматизировать генерацию кода заглушения клиента для вызова указанного веб-сервиса. Предоставление WSDL в том же месте, что и веб-сервис с добавленным к нему ?wsdl, очень удобно, и - это соглашение, в котором все используют.

Люди и инструменты ищут WSDL в этом месте, а рамки автоматически выставляют его в этом месте, но это просто соглашение. Насколько мне известно, это не указано ни в одной спецификации (или, по крайней мере, никому, что я мог бы найти).

Иногда, хотя вы не хотите предоставлять WSDL, на который каждый может посмотреть и попытаться создать клиента, потому что это частный веб-сервис, и вы только хотите предоставить доступ к своим партнерам, а не ко всем. В этот момент вы можете запретить URL ?wsdl и предоставить WSDL только своим партнерам, используя альтернативный канал. Вы даже можете отправить его по электронной почте, если вы не хотите, чтобы он был открыт в Интернете.

Таким образом, вы можете выбрать любой канал, чтобы разоблачить его. Просто помните, что , потому что люди и инструменты следуют этому соглашению, они используются, чтобы увидеть его там, и некоторые (плохо написанные) инструменты могут задушить в другом расширении, например.

P.S. Еще одна вещь, о которой я хотел упомянуть, - которая не имеет строгого отношения к этому ответу, но скорее усиливает соглашение - это the new ?singleWsdl option in WCF 4.5.

WCF, как и большинство других инструментов, предоставляет WSDL по адресу ?wsdl, но использует операторы xsd: import с внешними схемами. Некоторым структурам не удалось обработать WSDL с импортированными зависимостями, поэтому люди начали писать настройки по WCF, чтобы иметь плоский WSDL, так что в последней версии WCF Microsoft решила добавить эту функцию из коробки.

Но для обратной совместимости они необходимы для поддержания ?wsdl конечной точки, как это было (возвращающая WSDL документ XSD: операторы импорта внутри) и были вынуждены добавить новый параметр запроса для плоского WSDL: ?singleWsdl. Я уверен, что эта идея будет воспринята другими поставщиками и поставщиками веб-сервисов.

+0

Привет, Богдан, спасибо за такой подробный ответ и в значительной степени согласны с тем, что вы сказали. – CuriousMind

Смежные вопросы