В рамках недавнего проекта нашей команде разработчиков на основе .Net была поручена интеграция с целым рядом веб-сервисов на основе Java по всему миру, и у нас действительно было удивительно (ну, мы, конечно, больше не удивлены) большое количество проблем потому что XML, сгенерированный WCF, не принимается сервисами java.
Похоже, что на эту тему не так много полезной информации, мы получили несколько полезных советов из отличного блога Ярона Нейва на WCF, http://webservices20.blogspot.com , а также на форуме MSDN WCF http: //social.msdn.microsoft.com/Forums/en-US/wcf/threads .
Есть ли здесь кто-нибудь, кто действительно чувствует, что они это поняли, и знает исчерпывающий ресурс по этому вопросу? Заинтересовались бы советами по книгам, блогам или любым сайтам.
Редактировать:
я разрываюсь с настройкой ответа, принятого в этой теме, потому что каждый из двух лучших ответов имеет какое-то значение:
1. Вероятно, мы закончим делать больше реализаций HTTP Webrequest вместо борьбы с WCF.
2. Но WCF Express Interop Bindings 1.0 также был очень разумным советом.
Ответы:
Ах да ... SOAP, хваленый святой Грааль компьютеров. Лингва франка, которая обещала взаимодействие между системами по всему миру.
И тогда вы попадаете в различия между реализациями SOAP на Java и PHP и .NET. Или даже между сервисом WebSphere SOAP и клиентом Apache SOAP. Неважно иметь дело с различными стандартами совместимости WS-I. Теперь, пожалуйста, скажите мне, почему вам нужен стандарт совместимости для протокола, который был создан для совместимости , поговорим об иронии (и я имею в виду настоящую иронию, а не иронию марки Аланис Морриссетт ).
Единственный раз, когда вы не столкнетесь с проблемами при установлении связи между двумя конечными точками SOAP, это когда они находятся на одной и той же платформе, и в большинстве случаев платформа будет иметь более эффективный протокол удаленной работы.
Здесь я говорю о том, что по большей части SOAP бесполезен. Теперь мыло в нижнем регистре, я использую это каждый день, и я благодарен, что большинство людей делают то же самое.
При этом, если вы настаиваете на том, чтобы бить головой о кирпичную стену. Вот хорошее место для начала. У Microsoft есть набор привязок, позволяющих взаимодействовать с большинством основных серверов Java. Самое интересное, конечно, выяснить, какие из них работают с какими услугами вы интегрируете.
источник
На мой взгляд, ваши наблюдения довольно точны. Реализации высокого уровня на основе XML связи, как правило , не совместимы с различными платформами, даже если они будут так называемыми «SOAP». Незначительные различия в реализации, возможно, оба в рамках реализованного стандарта, создают проблемы в реальной жизни.
Моя рекомендация для поставщиков услуг: используйте простую реализацию, а не очень сложную и теоретически лучшую реализацию. Например, не включайте какие-либо чрезвычайно сложные схемы аутентификации, если они вам не нужны.
Моя рекомендация для потребителей услуг (я полагаю, вы): когда вы общаетесь с реализацией высокого уровня на платформе, отличной от вашей, переходите на реализацию более низкого уровня. Внезапно все становится довольно просто, если вы просто выясните, что представляет собой фактический XML для отправки, а затем будете использовать обычные хорошие методы кодирования для достижения этой цели, в качестве альтернативы настойчивому использованию высокоуровневой реализации вашей собственной платформы.
Надеюсь, это не было слишком абстрактно. Короче говоря , когда вы подключаетесь к платформе .NET к платформе Java, вы можете просто собрать заголовки и xml в запрос HttpWebRequest и отправить его таким образом.
источник
У вас будут те же проблемы, связанные с использованием веб-служб PHP.
Наш единственный ответ на это состоял в том, чтобы изменить тип протокола на REST, а не на SOAP. У нас никогда не было SOAP-компонентов для взаимодействия, так что для Simple!
источник