2011-05-04 3 views
4

SOAP 통합을 위해 Ruby와 Java를 사용하는 것을 결정해야합니다. 내 전체 웹 응용 프로그램은 Ruby on Rails를 기반으로하며 SOAP를 사용하여 레거시 시스템과 통합해야하는 중요한 백엔드 구성 요소가 있습니다.Java 대 Ruby for SOAP 처리

자바에는 Apache Axis와 같은 광범위한 SOAP 라이브러리가 있으며 Ruby에는 Savon 및 handSOAP과 같은 일부 보석이 있지만이 유형의 "레거시"웹 서비스와 잘 통합되는 것처럼 보입니다.

저는 Ruby 라이브러리 사용에 편향되어 있지만 성능/확장 성 문제에 관심이 있습니다. Ruby를 사용하여 첨부 된 성능/확장 성 문제는 무엇입니까?

더 많은 컨텍스트를 얻으려면 레거시 시스템과의 통합에는 성능이 덜 중요한 일별 프로세스와 쿼리가 처리되는 동안 사용자가 대기 중이므로 성능이 매우 중요한 실시간 쿼리 엔진의 두 가지 구성 요소가 있습니다 .

+1

왜 SOAP 호출이 병목 현상이라고 생각합니까? XML은 사용하는 언어에 관계없이 상대적으로 느립니다. 실제 병목 현상은 대개 DB 및/또는 네트워크입니다. –

+2

SAVON은 SOAP 웹 서비스를 사용해야 할 때 가장 많이 사용되는 보석입니다. HTTParty를 사용할 수는 있지만 봉투를 수동으로 처리해야합니다. –

답변

5

나는 최근에 같은 도전에 직면했다. 나는 원래 Java로 갔지만 요청을 구성하기 위해 Builder을 사용하고 응답을 구문 분석하기 위해 Nokogiri을 사용하여 Ruby로 모든 것을 포팅했다. 또한 SoapUI을 사용하여 요청 개발/디버깅을 도울 수 있습니다.

이유는 ... 자바를 통해 루비와

  1. 간단한 인프라를가는 바람 않았다. 필요하지 않은 경우 아키텍처에서 두 가지 패러다임을 사용하는 이유는 무엇입니까? 귀하의 사이트가 Ruby on Rails 인 경우 필요없는 경우 왜 Java를 도입하십시오.
  2. 자바에는 SOAP 요청을 객체로 변환하는 Axis와 같은 멋진 라이브러리가있다. 그러나 그것은 정말로 큰 문제는 아니지만, 내 논리의 대부분이 루비에있을 때 실제로 그렇게 많은 승리를 얻지는 못합니다. Nokogiri를 통해 DOM을 사용하여 작업하는 것이 중개 Java 객체를 갖는 것보다 훨씬 쉽습니다.
  3. 모든 논리 (ActiveRecord 모델 객체, 유효성 검사 등)는 모두 자바로되어 있습니다. Java 코드와 레일스 코드 사이에서 통신하기 위해 데이터베이스 지속성과 같은 논리를 복제해야했습니다. ... boo
  4. 성능 문제는 붉은 청어처럼 보입니다. SOAP 요청을하는 경우 네트워크 오버 헤드가 언어 구문 분석/실행이 아니라 병목 현상이 될 수 있습니다.
+1

고마워. 루비에서 왜 Savon이나 handSOAP을 사용하지 않았는지 물어봐도 될까요? –

+0

예. 짧은 버전은 내가 그들을 사용하기위한 승리를 보지 못했다는 것입니다. Builder를 사용하면 XML 요청 문서를 쉽게 작성할 수 있으며 서식을 완전히 제어 할 수 있습니다. 이것은 네임 스페이스 약어를 완벽하게 일치시킬 수 있도록 개발/디버깅을 위해 SoapUI를 사용할 때 매우 유용했기 때문에 요청을 앞뒤로 쉽게 잘라내어 붙여 넣을 수있었습니다. 나는 도서관이 어떤 가치를 더했다고 생각하지 않았습니다. 내 결과를 얻으려는 Nokogiri/XPath에 만족했으며, 왜 아무 것도 복잡하게 만들지 않았습니다. 좀 더 자세히 알고 싶으면 스카이프 전화를 걸어 결정에 대해 더 많이 이야기하게되어 기쁩니다. –

+0

모든 정보에 대해 감사드립니다. 귀하의 웹 사이트를 통해 연락을 드렸습니다. 감사! –