2010-06-22 2 views
2

여러 클라이언트가있을 가능성이 높은 범용 웹 서비스를 만들고 있는데, 그 중 일부는 현재로서는 예상 할 수 없습니다.SOAP/XML + REST/JSON을 제공하는 가장 좋은 방법은 무엇입니까?

나는 이미 멋진 자바 서비스 API를 가지고 있으며 그 위에 웹 서비스 외관을 제공하고자합니다.

SOAP 대 REST 토론의 양면에 큰 논쟁이 있으며 두 가지를 제공하는 쉬운 방법이 있는지 궁금해합니다. 같은 배포를 위해 동시에 둘 다를 동시에 수행 할 필요는 없습니다 (좋을지라도) ... 오히려 고객에게 선택을 제공하는 것입니다.

답변

3

아니요, 없습니다. SOAP과 REST는 서로 다른 아키텍쳐로, 두 프레임 워크 모두를 쉽게 처리 할 수있는 프레임 워크는 아마도 그것들 중 하나에서 나쁜 일을하고있을 것입니다.

WSDL 파일, SOAP 끝점 등의 함수 또는 메서드 집합을 얻는 것은 쉽지만 그 이유는 함수와 SOAP이 기본적으로 동일한 일을하기 때문에 아무 일도 일어나지 않습니다. 호출자는 여러 매개 변수를 사용하여 함수 호출을 설정하고 호출하고 응답 또는 예외를 기다립니다.

각 방법에 대한 HTTP 끝점을 만드는 것이 RESTful 끝점을 만드는 것으로 충분하다고 생각하지만 실제로는 그렇지 않습니다. 그러나 그러한 HTTP 끝점을 만드는 것이 여전히 당신에게 의미가있을 수 있으며,이 경우에는이를 제공하는 프레임 워크를 찾아야합니다.

    :

    내 대답은 "아니, 거기되지 않는다"는 REST 인터페이스를 만들기 위해, 그것은 HTTP 엔드 포인트를 게시하는 것만으로는 충분하지 때문입니다로 시작하는 이유, 당신은 훨씬 더 많은 작업을해야

  • 찾는 미디어 유형은 자신의 링크 관계를 정의
  • 자신의 미디어 타입을 설계
  • 을 재사용 할 수
  • 발견 링크 관계를 재사용
,536,

그리고 세상에는 임의의 함수 서명 목록을 받아서 네 가지를 수행 할 프레임 워크가 없습니다. 프레임 워크를 사용하면 SOAP보다 SOAP (예 : OAuth, OpenID, 캐싱, idempotency)보다 많은 HTTP를 활용할 수 있지만, REST로 완전히 이동하지는 않습니다.

3

예, 두 가지를 모두 제공 할 수 있습니다 (권장 사항입니다). HTTP Accept 헤더 (application/soap+xmlapplication/json) 또는 사용자 지정 쿼리 매개 변수 (예 : http://example.com/myapi?fmt=soaphttp://example.com/myapi?fmt=json)를 기반으로 응답 형식을 결정할 수 있습니다. 클라이언트가 응답에 대해 원하는 형식을 명시 적으로 지정하지 않은 경우 어떠한 경우에도 명확한 기본 대체 값이 필요합니다.

또한 REST/POX 응답 형식을 추가하고 Atom + 옵션 확장을 응답 컨테이너로 사용할 수도 있습니다. (위의 두 가지 방법에 대한 application/atom+xmlhttp://example.com/myapi?fmt=atom)

+0

을, 그래서 나는 몇 가지 설명을 요청할 수 있습니다? 호출자가 원하는 것을 구별하는 방법으로 HTTP 수락 헤더를 사용하여 SOAP/XML, SOAP/JSON, REST/JSOM 및 REST/POX를 동시에 제공 할 수 있다고 말하고 있습니까? 어떻게 이것을 구현합니까? 어떤 도구와 프레임 워크가이를 지원합니까? – HDave

+0

네, 그 사실을 이해했습니다. 클라이언트가 이해할 수있는 형식에 대한 웹 서비스 응답을 적절히 순차적으로 나열하는 것만으로 충분합니다. (Btw, SOAP/JSON과 같은 것은 없다. :-)) –

+0

Java 웹 서비스 프레임 워크가 있고 어떤 응답 형식 전환을 지원하는지 모르겠지만 모든 최신 웹 서비스 프레임 워크를 상상할 수있다. 그것을지지해야한다. 특정 프레임 워크에 대한 세부 정보를 제공한다면 사람들이 정확히 어떻게 할 수 있을지 확신 할 수있을 것입니다. –

-1

간단한 REST 솔루션을 사용합니다. 아마존은 동일한 서비스에 대해 REST와 SOAP API를 모두 가지고 있으며 REST 서비스는 85 %의 시간 동안 사용되므로 SOAP에 대한 특정 요구가 없다면 구현하지 않을 것이다.

+0

-1 : 그가 물었던 것이 아닙니다. –

+0

이 시스템의 고객 요구 사항은 더 큰 SOA 전략의 일부가 될 것입니다. – HDave

2

간단히 말해 단일 WCF 서비스는 동일한 서비스 계약에 대해 여러 끝점을 제공 할 수 있습니다. 하나는 REST 일 수 있고, 하나는 SOAP/XML 일 수 있고, 하나는 TCP/IP + 바이너리 일 수있다.

+0

이것은 WCF에만 적용됩니까? 문제가 될 것으로 생각하지 않았기 때문에 언급하지 않았지만 앱은 Java 서블릿으로 구현됩니다. – HDave

+0

예, 이것은 특히 WCF입니다. 플랫폼이 Java 인 경우 태그를 태그에 추가해야합니다. –

1

저는 비누 웹 서비스에 관심이 없지만 Apache에서 Axis 2 프레임 워크가 SOAP 1.1과 SOAP 1.2를 제공 할뿐만 아니라 동일한 비즈니스 로직 구현으로 REST/POX를 제공한다는 것을 알았습니다. 당신은 더 많은 정보를 볼 수 있습니다 난 아직도 웹 서비스 안돼서

http://ws.apache.org/axis2/

관련 문제