2011-12-28 2 views
-2

최근에 저는 이전 웹 서비스 SOAP/REST 이전 시대를 가져 와서 현재 웹 서비스 "표준"과 동등한 수준으로 끌어 올릴 임무가 주어졌습니다. 그것은 매우 직설적 인 서비스, HTTP (s) POST XML, XML을 매우 메시지 중심의 서비스로 처리합니다.우리는 REST가있는 둥근 구멍에 사각형의 못을 넣으려고하는 개발자입니까?

"웹"서비스에 대한 두 가지 가장 인기있는 옵션은 SOAP과 REST입니다 ... WS- 기술적으로 완벽하게 내 응용 프로그램에 딱 맞는 SOAP 말하기, 그것은 손으로 아주 무거운 느낌이지만

아무도 * 기능은 정말 없습니다 필요합니다. SSL과 간단한 사용자 이름/암호 인증을 수행하는 것이 좋지만 WS - *! @ $ @ $ @ 1 !!! 누가 그것을 필요로합니까?! 글쎄, 적어도 나는 사람들에게 조의를 표한다. (올바른 시나리오에서는 기술이 훌륭하다고 나는 확신한다.)

이제 나는 라이트 웨이트 같아서 REST를 좋아한다. 사실 Jersey와 같이 매우 인기있는 REST 프레임 워크를 사용하고 웹 서비스의 모든 단일 기능을 구현할 수있었습니다. 사실 나는 수천 줄의 코드 줄에서 100 줄의 코드를 결합하기 위해 코드 기반을 줄였습니다. 명백한 많은 수동 작업은 XML을 구문 분석하고 올바른 함수 호출 등으로 매핑하기 위해 기존 서비스에서 수행되고있었습니다.

REST에는 어떤 문제가 있습니까?

높은 수준에서? 정말로 (암소가 집에 올 때까지 앉아서 단점을 주장 할 수는 없습니다.) 그리고이 포스트/질문은 SOAP 대 REST의 화염 전쟁이 아닙니다. 그런데 왜 대부분이 길로 내려 가기로 결정 했습니까?

Jersey와 REST를 사용하여 서비스의 100 %를 구현할 수 있었지만, "REST"의 모든 규칙을 깨뜨릴 수있었습니다. 그것은

  • 캐시 가능한 아니에요

    • 그것은 이름을 제공하지 않습니다 자원
    • 그것은 더 복잡 다음 CRUD
    • 모든 것이
    • 모두 반환하는 POST 200로 OK

    그러나 그것은 환상적으로 작동합니다! :) 그러나 나는 규칙을 어 기고 있습니다 : P

    예를 들어, 내 응용 프로그램은 수백 개의 "오류"코드가 있습니다. REST 녀석들은 400 Bad Request에 대한 맵을 말하고 당신의 이유를 몸에 담기를 좋아합니다. 하지만 XML 응답에서 코드를 반환하기 만하면 왜 그런지 말할 수 있습니다. 클라이언트 (개발자)가 왜 하나의 코드를 간단히 파싱 할 수 있는지 혼동하는 이유는 무엇입니까?

    SOAP가 무겁고 REST가 CRUD 및 리소스 지향 응용 프로그램에보다 중점을 둔 것처럼 보인다면 경량 웹 서비스에 대한 옵션은 무엇입니까? XMLRPC? 왜 사람들은 REST에 꽂혀 있거나 왜 놓쳤습니까?

    즐거움을 시작합시다! :)

  • +0

    +1 - "즐거움을 시작합시다" – IDWMaster

    +0

    당신이하고있는 일은 전혀 멈추지도 않습니다. "모든 규칙을 어기십시오". 당신은 정말로 HTTP를 사용하고 있습니다. 네가 그걸로 괜찮다면, 그렇게해라. 당신을 위해 일하는 것을 사용하십시오 ... – Pete

    +3

    누가 REST가 CRUD에 대한 것이 었습니까? –

    답변

    2

    HTTP와 같은 테스트를 거친 검증 된 분산 응용 프로그램 프로토콜을 다시 발명하면 행복합니다.

    • 당신은 HTTP에 부합하면, 새로운 개발자는 훨씬 빨리 작동하는 방법에 속도까지 얻을 것이다.
    • HTTP를 준수하면 디버깅 도구, 캐싱 프록시,로드 밸런서와 같은 기존 구성 요소를 다시 사용할 수 있습니다.
    • 귀하의 응용 프로그램은 수년 간의 실제 테스트의 이점을 얻습니다.
    +1

    다시 발명하지 마십시오! 사실 그냥 pre REST/SOAP 서비스를 업그레이드합니다. 나는 기술적으로 REST의 장점을 좋아한다. 나는 그것의 대부분을 필요로하지 않는다. 캐시가 필요없고 프록시가 필요 없습니다. 그것은 자원 봉사가 아닌 비즈니스 서비스입니다. 고객은 필요에 따라 연결하고 복잡한 비즈니스 프로세스를 실행합니다. 리소스를 제공하지 않습니다. PUT 대 POST 또는 GET에 대한 실제 요구 사항은 없습니다. 실패는 "소프트"실패입니다. 기타... – user432024

    관련 문제