Java 웹 서비스에서 WCF 로의 상호 운용성 놀랍게도 문제가있는 것 같습니다. 좋은 자원이 있습니까?


13

최근 프로젝트를 통해 .Net 기반 개발자 팀은 전 세계의 모든 Java 기반 웹 서비스와 통합하는 임무를 수행했으며 실제로 놀랍게도 (더 이상 놀라지 않을 것입니다) 많은 문제를 겪었습니다. WCF에 의해 생성 된 XML은 Java 서비스에서 허용되지 않기 때문입니다.

또한이 주제에 관해 찾을만한 좋은 정보가 많지 않은 것 같습니다 .Yaron Nave의 우수한 WCF 블로그 인 http://webservices20.blogspot.com 및 MSDN WCF 포럼 http 에서 유용한 팁을 얻었습니다 . //social.msdn.microsoft.com/Forums/en-US/wcf/threads .

여기에 그들이 진정으로 있다고 생각하고 그 주제에 대한 결정적인 자원을 알고있는 사람이 있습니까? 책, 블로그 또는 웹 사이트에 대한 팁에 관심이 있습니다.

편집 :
나는이 스레드에서 허용되는 답변을 설정하는 데
어려움을 겪고 있습니다. 두 가지 최고의 답변 각각에 약간의 가치가 있기 때문입니다. 1. WCF와 싸우는 대신 HTTP 웹 요청 구현을 더 많이 수행하게 될 것입니다.
2. 그러나 WCF Express Interop Bindings 1.0도 매우 합리적인 팁이었습니다.


WCF에 대해서는 아무것도 모르지만 SOAP 기반 XML 패킷 또는 RESTful 서비스에서 사용할 수있는 XML 덩어리를 생성합니까?
Martijn Verburg

1
XML, JSON 또는 RDF + XML을 반환합니다.
Alan B

wcf client와 java webservice 사이에 무엇이 잘못되었는지 예를 들어 줄 수 있습니까? webservice = soap 또는 다른 것을 의미합니까?
k3b

1
자세한 내용은이 질문의 범위를 벗어납니다. 예를 들어 스택 오버플로에서 내 프로필을 확인할 수 있습니다. 여기서 다른 누군가 WCF (또는 일반적으로 .Net) 클라이언트와 동일한 문제가 다른 플랫폼을 기반으로하는 웹 서비스와 상호 작용하고 있는지 듣고 싶습니다.
Bjørn

답변:


15

아 그렇다 ... SOAP, 컴퓨터의 성배. 전세계 시스템 간 상호 운용을 약속 한 링구아 프랑카.

그런 다음 Java와 PHP 및 .NET에서 SOAP 구현의 차이점을 알게됩니다. 또는 WebSphere SOAP 서비스와 Apache SOAP 클라이언트 간에도 가능합니다. 다른 WS-I 호환성 표준을 다루는 것을 신경 쓰지 마십시오. 당신이 프로토콜에 대한 호환성 표준이 필요한 이유 이제 제발 말해 호환성을 위해 만들어진 아이러니에 대한, 이야기를 (내가 진짜 아이러니를 의미 아이러니하지 앨라니스 Morrissette 브랜드 ).

두 SOAP 엔드 포인트가 통신하는 데 문제가 발생하지 않는 유일한 시간은 두 플랫폼이 모두 동일한 플랫폼에 있고 대부분의 경우 플랫폼에보다 효율적인 원격 작업 프로토콜이있는 경우입니다.

여기서 말하는 것은 SOAP이 쓸모 없다는 것입니다. 이제 소문자 비누를 매일 사용하고 대부분의 사람들이 똑같이 해줘서 고맙습니다.

그것은 당신이 벽돌 벽에 머리를 때리는 것을 주장한다면 말입니다. 여기에 좋은 장소입니다 시작 마이크로 소프트의 주요 자바 서버의 대부분 상호 운용성 수 있도록 바인딩 세트를 가지고는. 물론 재미있는 부분은 어떤 서비스를 통합하고 있는지 알아내는 것입니다.


5
SOAP는 새로운 CORBA입니다 :)
gbjbaanb

어떻게 든 클라이언트 통합 프로젝트에서 성공적으로 수행하는 것 같습니다. 분명히 YMMV.
David J. Liszewski 2

9

내 의견으로는, 당신의 관찰은 매우 정확합니다. XML 기반 통신의 높은 수준의 구현 둘 다 "SOAP"라고 하더라도 일반적으로 다른 플랫폼과 호환되지 않습니다 . 구현의 미묘한 차이는 아마도 구현 된 표준 범위 내에서 실제 사용에 문제를 일으 킵니다.

서비스 제공 업체에 대한 나의 추천 : 매우 복잡하고 이론적으로 더 나은 구현보다는 단순한 구현을 사용하십시오. 예를 들어, 매우 복잡한 인증 체계가 필요하지 않은 경우 포함하지 마십시오.

서비스 소비자에 대한 나의 권장 사항 (귀하가 생각합니다) : 귀하의 플랫폼과 다른 플랫폼에서 높은 수준의 구현과 통신 할 때는 낮은 수준의 구현으로 저하하십시오. 실제로 전송할 XML이 무엇인지 파악한 다음 정상적인 코딩 방법을 사용하여 자체 플랫폼의 높은 수준의 구현 사용을 주장하는 대신 갑자기 간단 해집니다.

너무 추상적이지 않기를 바랍니다. 간단히 말해서 Java 플랫폼에 연결하는 .NET 플랫폼에있을 때 간단히 HttpWebRequest에서 헤더와 XML을 어셈블하여 전송하는 것이 좋습니다.


4

PHP 웹 서비스를 소비하는데도 같은 문제가 있습니다.

이에 대한 유일한 대답은 프로토콜 유형을 SOAP가 아닌 REST로 변경하는 것입니다. 우리는 SOAP을 상호 운용 할 수 없었습니다.


대부분의 경우 기존 웹 서비스를 어떤 식 으로든 변경할 수있는 옵션이 전혀 없으며, SOAP를 사용하여 기존 웹 서비스에 연결해야합니다. 그래서 나는 당신을 위해 답을 풀지 못할 것을 두려워합니다. ;)
Bjørn

1
> "기존 웹 서비스를 어떤 방식 으로든 변경할 수있는 옵션이 없습니다." 자신을 보호하십시오, 당신은 거친 타기를 위해 있습니다. 방금 2 주간의 헤드 뱅킹에서 회복되어 java / android에서 wcf / soap 웹 서비스를 호출하려고했습니다. 저의 구원은 제가 당신과 달리 서비스에 접근하여 REST / JSON 엔드 포인트를 노출시키는 것입니다. 잘 했어. 가능하다면.
BaBu

@ Bjørn 아,이 말을해서 죄송하지만 기술 용어를 사용하면 문제가 생길 수 있습니다. 유일한 대답은 WCF 사용을 중지하고 다른 SOAP 클라이언트를 사용하는 것입니다.
gbjbaanb

우리 팀은 당신의 답변에서 웃고 울고 있습니다. 고마워요
Bjørn
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.