Кто-нибудь знает какие-либо проблемы с использованием WCF для предоставления интерфейса SOAP для клиентов, отличных от .NET?
-
01-07-2019 - |
Вопрос
Кто-нибудь знает какие-либо проблемы с использованием WCF для предоставления интерфейса SOAP для клиентов, отличных от .NET?Например, несовместимость с другими библиотеками SOAP?
Это сделано для того, чтобы интерфейс SOAP мог быть доступен третьим лицам для интеграции с нашим программным обеспечением.
Решение
Некоторые из проблемных областей, с которыми я столкнулся при работе с WCF:
- Он генерирует WSDL, который разделен на несколько URL -адресов.То есть одна часть схемы находится в одном URL, другой находится в другом URL и т. Д.«Основной» URL WSDL (тот, что с справедливым »? WSDL» после названия службы) ссылается на другие через
xsd:import
элементы.Многие клиенты SOAP (например, Delphi до версии .NET) испытывают огромные трудности с этой идиомой.Таким образом, вам действительно придется «сгладить» свой WSDL, чтобы добиться совместимости на практике.Дано одно решение здесь. - WCF не генерирует пространства имен XML так же, как, скажем, веб -сервисы ASMX.WCF имеет тенденцию размещать любой контракт на услуги или данные в пространство имен по своему выбору.Опять же, у некоторых клиентов SOAP возникают с этим трудности.Вы можете повысить уровень совместимости, добавив явное пространство имен к атрибутам ServiceContract и DataContract.
- Многие клиенты SOAP не будут справляться с недостатками, как клиенты WCF.Например, код генерации прокси не будет создавать объекты на стороне клиента для ошибок, объявленных в WSDL.Конечно, неисправности все еще будут переданы клиенту, но тогда клиент должен сделать больше работы, чтобы выяснить, какая это вина.
Другие советы
версии стека стандартов WS-* также могут быть проблемой совместимости — например, версия WS-Addressing (2003), поддерживаемая некоторыми реализациями Java, например, Oracle BPEL не поддерживается WCF, который поддерживает более поздние версии проекта и 1.0, но не версию 1.0. ранее 2003 года один
В целом все работает нормально.Очевидно, это будет зависеть от используемого вами клиента — не все правильно реализуют SOAP.
P.S.Не могли бы вы перефразировать свой вопрос, если надеетесь на более конкретный ответ?