2010-08-13 10 views
3

필자는 시스템에 Perl 기반 SOAP 서버를 추가하는 방법을 살펴 보았습니다. Perl에서 SOAP 도구를 찾을 때마다 개발자 오버 헤드가 VS.net 세계의 사람들보다 얼마나 더 많이 필요하게되는지 실망합니다. (그리고 오랫동안 찾고 있었어요)WSDL로 Perl 인터페이스를 설명합니다.

다른 질문을 검토 한 결과, 최근에 인기있는 도구 인 것 같습니다. XML::Compile::SOAP. 내 코드가 서비스를 제공하는 방법을 찾았지만, Pod::WSDL으로 시작하는 .WSDL 파일을 수동으로 마사지해야했습니다.

제가 CPAN이나 다른 곳에서 찾지 못한 직접적인 접근 방식이 있습니까? Pod::WSDL은 기본적으로 rpc/encoded를 뱉어냅니다. 이해하는 것은 더 이상 '최선의'방법이 아닙니다. 문서/리터럴은 아직 지원되지 않으며 소스를 읽으면 문서/리터럴을 수행하는 코드 부분을 볼 수 있지만 XML::Compile::SOAP과 직접 작동하지는 않습니다. 이상적으로는 POD 또는 perl5 속성에서 코드에 몇 가지 주석을 추가하고 버튼을 누르고 XML :: Compile 패키지로 피드 할 수있는 WSDL을 얻습니다.

미리 감사드립니다.

+1

서식 편집을 위해 Sinan에게 감사드립니다. – Jason

+0

다른 대안은 필요한 개선 사항을 직접 작성하여 새 CPAN 모듈 또는 기존 패치에 대한 패치로 릴리스하는 것입니다. – Ether

+0

@Ether -이 프로세스에 대해 알게되면 실제로 이러한 접근 방식을 고려하고 있습니다. 내가 그렇게하면,이 q를 닫고 메모를 남길 것이다. – Jason

답변

1

내가 아는 한 더 나은 방법은 없습니다. 적어도 간단한 서비스를 위해서는.

RPC 사고 방식으로 웹 서비스를 작성하면 SOAP :: Lite는 사용하기가 쉽지 않은 것으로 나타났습니다.

  • 는 같은 파일에 OO 스타일
  • 팩터를 서브 루틴이있는 작은 펄 프로그램을 작성 펄 객체로 & 반환 값을 PARAMS.
  • 서브 루틴을 별도의 모듈로 이동하여 테스트하십시오.
  • 서브 루틴 모듈을 서버로 이동하십시오. 데이터 전송 객체 모듈도 복사하십시오.
  • 서버에 SOAP :: Lite 디스패처를 추가합니다 (소수의 행).
  • perl 프로그램 (클라이언트)의 맨 위에 몇 줄의 SOAP :: Lite를 추가하십시오. 끝난.

RPC가 부적절한 RPC/Encoded 스타일을 사용한다는 것은 사실입니다. 그러나 약간의 POD 마크 업을 추가하면 (포스트 마사지). 닷넷 클라이언트 을 행복하게 소비 할 수 있습니다 (적어도 모노와 타사는 MS C#으로 테스트했습니다)

말하자면, Pod :: WSDL의 출력물에는 마사지가 필요합니다. 빌드 프로세스의 일부로 하나의 네임 스페이스를 수정해야한다는 것을 상기합니다.

진보 된 SOAP 관련 XML 처리가 많이 보이지 않거나 잘 통합되어 있지 않으며 SOAP :: Lite 및 Pod :: WSDL이 약간 죽은 것으로 보입니다.

그러나 단순한 원격 메소드 호출에서 Perl 객체를 전달할 때 나는 찌르기를 한 Java 프레임 워크보다 단순한 순서를 찾았습니다. 귀하의 마일리지가 다를 수 있습니다.

관련 문제