루비 웹 서비스



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

다음은 각 매개 변수에 대한 설명입니다.

ParameterDescriptionreceivermethodNameparamArg
메서드 이름이 포함된 메서드의 개체입니다. 동일한 클래스에서 서비스 메소드를 정의하는 경우 매개변수는 self입니다.
RPC 요청의 메서드 이름입니다.
매개변수 이름 및 매개변수 모드

inoutout 매개변수를 이해하려면 inParam 및 inoutParam이라는 두 매개변수를 입력해야 하는 다음 서비스 메서드를 고려하세요. 함수가 실행되면 retVal, inoutParam, outParam이라는 세 가지 값이 반환됩니다.

공개 호출 방법은 다음과 같습니다.

def aMeth(inParam, inoutParam)
   retVal = inParam + inoutParam
   outParam = inParam . inoutParam
   inoutParam = inParam * inoutParam
   return retVal, inoutParam, outParam
end

4단계 - 서비스 시작

마지막으로 파생 클래스를 인스턴스화하고 시작 메서드를 호출하여 서비스를 시작합니다.

add_method(self, 'aMeth', [
    %w(in inParam),
    %w(inout inoutParam),
    %w(out outParam),
    %w(retval return)
])

다음은 요청 매개변수에 대한 설명입니다.

ParametersDescription서비스 이름, 원하는 것을 선택할 수 있습니다여기 호스트 이름을 지정하세요web service port
ServerName
urn:ruby:ServiceNameurn :ruby는 수정되었지만 서비스에 고유한 이름을 선택할 수 있습니다 ServiceName
hostname
port
Instance

다음으로 독립된 회사를 만듭니다. 위 단계를 통한 서비스:

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 서비스를 호출하려면 다음 정보가 필요합니다.

  • SOAP 서비스 URL 주소(SOAP 끝점 URL)

  • 서비스 메서드 네임스페이스(메소드 네임스페이스 URI)

  • 서비스 메서드 이름 및 매개 변수 정보

다음으로, 위의 SOAP 메소드를 호출하기 위해 SOAP 클라이언트를 단계별로 생성하겠습니다: add, div:

1단계 - SOAP 드라이버 인스턴스 생성

SOAP::RPC::Driver 클래스를 인스턴스화하여 호출할 수 있습니다.

$ ruby MyServer.rb&

다음은 매개변수에 대한 설명입니다.

Parameter DescriptionSOAP 서비스 주소 에 연결하기 위한 URL 네임스페이스는 SOAP::RPC::Driver 개체의 모든 RPC에 사용됩니다.은 HTTP 헤더의 SOAPAction 필드 값에 사용됩니다. 문자열이 ""인 경우 기본값은
endPoint
nameSpace
soapActionnil
2단계 - 서비스 메서드 추가

SOAP::RPC::Driver에 SOAP 서비스 메서드를 추가합니다. SOAP::RPC::Driver를 인스턴스화할 수 있습니다.

SOAP::RPC::Driver.new(endPoint, nameSpace, soapAction)

다음은 매개변수에 대한 설명입니다.

parameter 설명원격 웹 서비스의 메소드 이름프로그램의 원격 매개변수 지정

3단계 - SOAP 서비스 호출

마지막으로 SOAP::RPC::Driver 인스턴스를 사용하여 SOAP 서비스를 호출할 수 있습니다.

driver.add_method(name, *paramArg)

serviceMethod SOAP 서비스의 실제 메소드 이름인 paramArg는 메소드의 매개변수 목록입니다. .

Example

위 단계를 기반으로 다음 SOAP 클라이언트를 작성할 수 있습니다.

result = driver.serviceMethod(paramArg...)

위에서는 Ruby의 웹 서비스를 간략하게 소개했습니다. 더 알고 싶다면 공식 문서인 Ruby's Web Services

를 확인하세요.
name
paramAr 지