Обязательно ли иметь определение 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
. Я уверен, что эта идея будет воспринята другими поставщиками и поставщиками веб-сервисов.
Я также придерживаюсь того же мнения, но не могу найти какой-либо ссылочный документ/ссылку, которая проверяет его с точки зрения стандартов. Это необходимо для совместного использования с заинтересованными сторонами. У меня была одна ссылка, но я потерял ее как-то. Можете ли вы указать мне ссылку? – CuriousMind
У меня нет ссылки для ссылки (не найти какой-либо). Если это официальная вещь, у нас должна быть ссылка. Отсутствие ссылки * может * указать, что оно не является официальным. –