루비 웹 서비스
SOAP이란 무엇인가요?
Simple Object Access Protocol(SOAP, 약어로 Simple Object Access Protocol)은 데이터 교환을 위한 프로토콜 사양입니다.
SOAP는 애플리케이션이 HTTP를 통해 정보를 교환할 수 있게 해주는 간단한 XML 기반 프로토콜입니다.
Simple Object Access Protocol은 데이터 교환을 위한 프로토콜 사양으로, 웹 상에서 구조를 교환하고 견고한 XML 기반(Standard Universal Markup Language의 하위 집합) 프로토콜입니다.
더 많은 SOAP 튜토리얼을 보려면 http://www.w3cschool.cc/soap/soap-tutorial.html을 확인하세요.
SOAP4R 설치
SOAP4R은 Hiroshi Nakamura가 Ruby SOAP 애플리케이션용으로 개발하고 구현했습니다.
SOAP4R 다운로드 주소: http://raa.ruby-lang.org/project/soap4r/.
참고: 귀하의 Ruby 환경에 이미 이 구성 요소가 설치되어 있을 수 있습니다.
Gem을 사용하여 Linux 환경에서 이 구성 요소를 설치할 수도 있습니다. 명령은 다음과 같습니다.
$ gem install soap4r --include-dependencies
Windows 환경에서 개발하는 경우 zip 파일을 다운로드하고 install.rb를 실행하여 설치해야 합니다. soAP4R ServiceSOAP4R은 두 가지 다른 서비스 유형을 지원합니다. cGI/FASTCGI 서비스 (soap :: rpc :: cgistub)
- 독립 서비스 (soap :: rpc : standaloneserver)
-
이 튜토리얼에서는 독립적인 SOAP 서비스를 만드는 방법을 소개합니다. 단계는 다음과 같습니다.
1단계 - SOAP::RPC::StandaloneServer 상속
독립적인 서버를 구현하려면 SOAP::RPC::StandaloneServer의 하위 클래스인 새 클래스를 작성해야 합니다. :
class MyServer < SOAP::RPC::StandaloneServer ............... end참고:
FastCGI 기반 서버를 작성하는 경우 SOAP::RPC::CGIStub 클래스를 상속해야 하며 프로그램의 나머지 부분은 변경되지 않습니다.
2단계 - 처리 방법 정의 다음으로 웹 서비스의 방법을 정의합니다. 다음과 같이 두 가지 방법을 정의합니다. 하나는 두 개의 숫자를 더하는 것이고, 다른 하나는 두 개의 숫자를 나누는 것입니다.
class MyServer < SOAP::RPC::StandaloneServer ............... # 处理方法 def add(a, b) return a + b end def div(a, b) return a / b end end
3단계 - 게시 처리 방법
다음으로 서버에 정의한 방법을 추가합니다. 초기화 방법은 공개이며 외부 연결에 사용됩니다.
class MyServer < SOAP::RPC::StandaloneServer def initialize(*args) add_method(receiver, methodName, *paramArg) end end
다음은 각 매개 변수에 대한 설명입니다.
Parameterreceiver | |||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
메서드 이름이 포함된 메서드의 개체입니다. 동일한 클래스에서 서비스 메소드를 정의하는 경우 매개변수는 self입니다. | methodName | ||||||||||||||||||||||||
RPC 요청의 메서드 이름입니다. | paramArg | ||||||||||||||||||||||||
매개변수 이름 및 매개변수 모드 | inout 및 out 매개변수를 이해하려면 inParam 및 inoutParam이라는 두 매개변수를 입력해야 하는 다음 서비스 메서드를 고려하세요. 함수가 실행되면 retVal, inoutParam, outParam이라는 세 가지 값이 반환됩니다. 공개 호출 방법은 다음과 같습니다.def aMeth(inParam, inoutParam) retVal = inParam + inoutParam outParam = inParam . inoutParam inoutParam = inParam * inoutParam return retVal, inoutParam, outParam end4단계 - 서비스 시작마지막으로 파생 클래스를 인스턴스화하고 시작 메서드를 호출하여 서비스를 시작합니다. add_method(self, 'aMeth', [ %w(in inParam), %w(inout inoutParam), %w(out outParam), %w(retval return) ])다음은 요청 매개변수에 대한 설명입니다.
다음으로 독립된 회사를 만듭니다. 위 단계를 통한 서비스:myServer = MyServer.new('ServerName', 'urn:ruby:ServiceName', hostname, port) myServer.start위 프로그램을 실행한 후 포트 8080을 수신하는 로컬 서비스가 시작되고 add 및 div라는 두 가지 메서드가 노출됩니다. 위 서비스를 백그라운드에서 실행할 수 있습니다: require "soap/rpc/standaloneserver" begin class MyServer < SOAP::RPC::StandaloneServer # Expose our services def initialize(*args) add_method(self, 'add', 'a', 'b') add_method(self, 'div', 'a', 'b') end # Handler methods def add(a, b) return a + b end def div(a, b) return a / b end end server = MyServer.new("MyServer", 'urn:ruby:calculation', 'localhost', 8080) trap('INT){ server.shutdown } server.start rescue => err puts err.message end SOAP4R 클라이언트SOAP 클라이언트를 개발하려면 Ruby의 SOAP::RPC::Driver 클래스를 사용하세요. 다음으로 SOAP::RPC::Driver 클래스의 사용을 자세히 살펴보겠습니다. SOAP 서비스를 호출하려면 다음 정보가 필요합니다.
$ ruby MyServer.rb&다음은 매개변수에 대한 설명입니다.
SOAP::RPC::Driver.new(endPoint, nameSpace, soapAction)다음은 매개변수에 대한 설명입니다.
|